我知道我遇到的問題是,我只是很難找到解決辦法。我想知道是否有人經歷過這樣的事情,他們實施了什麼樣的解決方案。運行setTimeout方法+傳遞變量的Javascript堆棧溢出
我有一個名單系統,等待維修,我想這是遲到閃爍黑色和紅色修理。這個列表中有很多修復可能很晚。
這裏是我的功能:
function setblink(id) {
var elm = document.getElementById(id);
if (elm.color == "red"){
elm.color = "black";
}
else{
elm.color = "red";
}
setTimeout(setblink(id),500);
}
我有「的ID」對於需要閃爍稱爲repsToBlink項目的數組。
我得到通過運行下面的代碼,這使他們在遞歸循環運行的每個這些修復的設定眨眼的時間間隔。
for(var x in repsToBlink){
setTimeout(setblink(repsToBlink[x]),500);
}
我怎樣才能得到這段代碼做同樣的事情,而不會導致堆棧溢出?
謝謝!
如果你想用純CSS做這個試試[this](http://jsfiddle.net/Krr7m/)。有關[MDN]的更多信息(https://developer.mozilla.org/en/CSS/CSS_animations)。您需要添加更多供應商特定的前綴才能使其適用於更多瀏覽器,並且不適用於舊版瀏覽器。 – 2012-01-16 18:21:26
我不是每個元素的'setTimeout()'的忠實粉絲。使用列表,而不是:http://jsfiddle.net/HdCbt/ – 2012-01-16 18:48:32
[超過最大調用堆棧大小]的Dup(http://stackoverflow.com/questions/8731840/),[爲什麼使用括號調用setTimeout不啓動新的callstack?](http://stackoverflow.com/questions/8058996/)。 – outis 2012-01-16 19:19:24