簡體   English   中英

JS setTimeout 不延遲

[英]JS setTimeout Not Delaying

好的,我正在嘗試每 1/4 秒左右在我的頁面上添加數字。 因此,用戶可以看到更改。 我正在使用 setTimeout 並且我的所有計算都正確進行,但沒有任何延遲。 這是代碼:

for(var i = 0; i < 10; i++)
{
  setTimeout(addNum(i),250);
}

我也嘗試過捕獲返回值:

for(var i = 0; i < 10; i++)
{
  var t = setTimeout(addNum(i),250);
}

我還嘗試使用 function 語法作為 setTimeout 參數的一部分:

for(var i = 0; i < 10; i++)
{
  var t = setTimeout(function(){array[j].innerHTML + 1},250);
}

我還嘗試將代碼放入字符串中並將 function 調用放入字符串中。 我永遠不能拖延。 請幫忙!

怎么樣:

var i=0;
function adder() {
   if(i>=10) {return;}
   addNum(i++);
   setTimeout(adder,250);
}
adder();

當你做了setTimeout(addNum(i),250); 您立即執行了 function (函數名稱后跟()將立即執行它並將返回值傳遞給超時以在 1/4 秒后執行)。 因此,在一個只會立即執行所有 10 個的循環中。 這就是你所看到的。

捕獲返回值var t = setTimeout(...); 有幫助,但不適用於您的用例; 該值為定時器ID號,用於取消超時。

不確定您的最后一次嘗試是什么,盡管可能是您的addNum例程的 function 主體,因此與上述相同的邏輯適用。

試試 setTimeout("addNum(" + i + ")", 250); 它不起作用的原因是因為它評估參數並執行它並將其更改為 setTimeout(addNum(i) 的結果,250);

也許相反,由於您多次運行相同的方法,您應該改用setInterval方法嗎? 這是您如何做到這一點的示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM