3

奇妙な概念的な質問。以下の配列には3つの要素が含まれています。このコードを実行するとき、スクリプトは2秒間待機し、アラートを表示し、2秒間待機し、アラートを表示し、2秒間待機し、最後のアラートを表示することを目的としています。代わりに、2秒間待機してから、3つのアラートすべてを連続して表示します。私はしばらくそれをいじっていましたが、私が欠けているものを見つけることができません。助言がありますか?

      $.each(node_array, function(index,value){
        if(value != undefined){
          setTimeout(function(){
            alert("hey")},
          2000)
        }
      });
4

2 に答える 2

3

反復するときは、タイムアウトを設定しますが、反復を停止しません。したがって、すべてのsetTimeoutが同時に起動されます。

必要なのはsetTimeout、ユーザーがアラートをクリックした後に次に起動することです。

var i=0;
function onestep(){
   alert('hey');
   var value = node_array[i];
   if (++i<node_array.length) setTimeout(onestep, 2000);
}
onestep();

デモンストレーション

于 2012-12-21T19:34:29.203 に答える