我正在尝试用javascript做某种西蒙游戏。我已经创建了一个表,并且一个函数可以将任何单元格的id更改为另一个id,因此它的颜色变化为300毫秒。这是代码:
var seleccionarcelda = function(object){
var id=object.id;
object.id="selected";
setTimeout(function(){object.id=id;},300);
}
然后,对于我想要的大小的序列,它应该点亮一个随机单元格,然后在for循环中点亮另一个单元格
var secuencia = function(numero){
for(j=0; j<numero; j++){
var cel="t"+ Math.floor((Math.random() * 6) + 1);
console.log(cel);
seleccionarcelda(document.getElementById(cel));
}
}
问题在于它有效,但是一次选择所有单元格,而不是按照它应该做的顺序。我该如何解决?
答案 0 :(得分:1)
您可以将循环索引传递给函数,并将其用作延迟时间的乘数。
类似的东西:
var seleccionarcelda = function(object, index){
// increment delay timer
var delay = (index + 1) * 300;
var id=object.id;
object.id="selected";
setTimeout(function(){object.id=id;}, delay );// use variable for timer delay
}
var secuencia = function(numero){
for(j=0; j<numero; j++){
var cel="t"+ Math.floor((Math.random() * 6) + 1);
console.log(cel);
// pass j to function
seleccionarcelda(document.getElementById(cel), j);
}
}
现在发生的事情是循环以毫秒为单位完成,因此所有setTimeout
基本上都在同一时间开始