Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
播放嘟嘟声的Javascript计时_Javascript_Settimeout_Setinterval - Fatal编程技术网

播放嘟嘟声的Javascript计时

播放嘟嘟声的Javascript计时,javascript,settimeout,setinterval,Javascript,Settimeout,Setinterval,我正在构建一个网格,它将在HTML5/Javascript中播放声音,基本上我希望它通过循环不断重复,所以我设置: window.setInterval(playMusic,INTERVAL); 到目前为止,这一切都很好,但当我尝试在每列上添加setTimeout事件时: function playMusic(){ for(var i=0;i<GRID_SIZE;i++){ setTimeout(playCol(i),INTERVAL/GRID_SIZE*i);

我正在构建一个网格,它将在HTML5/Javascript中播放声音,基本上我希望它通过循环不断重复,所以我设置:

window.setInterval(playMusic,INTERVAL);
到目前为止,这一切都很好,但当我尝试在每列上添加setTimeout事件时:

  function playMusic(){
    for(var i=0;i<GRID_SIZE;i++){
      setTimeout(playCol(i),INTERVAL/GRID_SIZE*i);
    }
  }
函数播放音乐(){

对于(var i=0;i您可以将playMusic设置为一个递归函数,使计数器位于外部:

var i = 0;

function playMusic(){
    if( i < GRID_SIZE ){
        playCol(i);
        i++;
        setTimeout( playMusic, INTERVAL/GRID_SIZE );
    }
}
var i=0;
函数playMusic(){
如果(i<网格大小){
playCol(一);
i++;
设置超时(播放音乐、间隔/网格大小);
}
}

这样做播放音乐()函数将一直调用自身,直到if条件为false。i变量已更新,并将用于为playCol函数选择不同的声音。

不,仍然错误…
i
在调用时将
GRID\u SIZE+1
。是的@epascarello,你是对的,我刚刚重写了我的答案。这非常有效,但我没有我真的不明白为什么。有人能详细解释一下吗?@archdev我刚刚更新了答案,在最后做了一些解释。