我想在HTML/JS中編寫遊戲Simon,它的全部工作,除了遊戲閃爍序列的部分,所以你知道新序列是什麼。基本上我有什麼是:for循環中的多setTimeout調用
for(var i in thePattern){
var obj = document.getElementById(thePattern[i]);
window.setTimeout(colorON(obj),500);
window.setTimeout(colorOFF(obj),1000);
}
其中colorON和colorOFF是:
function colorON(obj){
if(obj.id == "red"){
obj.style.backgroundColor="#ff5555";
}else if(obj.id == "blue"){
obj.style.backgroundColor="#5555ff";
}else if(obj.id == "green"){
obj.style.backgroundColor="#88ff88";
}else{
obj.style.backgroundColor="#ffffaa";
}
}
function colorOFF(obj){
if(obj.id == "red"){
obj.style.backgroundColor="#ff0000";
}else if(obj.id == "blue"){
obj.style.backgroundColor="#0000ff";
}else if(obj.id == "green"){
obj.style.backgroundColor="#22ff22";
}else{
obj.style.backgroundColor="#ffff00";
}
}
什麼它似乎做的是經歷了整個的循環,並啓動所有的計時器,然後再所有定時器這麼快就熄滅了,甚至顏色看起來都不閃爍。
任何想法?所有的幫助非常感謝。
現在它是正確閃爍,關閉工作正常,但在同一時間閃爍的所有顏色。然而,我試圖將封閉件放入另一個setTimeout
,這隻會產生其他問題。
解決感謝您的幫助球員。
你真的需要了解switch語句。 – epascarello 2013-05-13 17:34:21
首先解決這裏答案中指出的問題。然後,當你發現修復這個問題的下一個問題會暴露,看看這個:http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example – 2013-05-13 17:36:10