簡體   English   中英

Javascript函數setInterval()只能運行一次

[英]Javascript Function setInterval() works only one time

伙計們! 我想問一下Javascript函數setInterval()。 我的問題是setInterval()只工作一次,而不是重復。

這是我的HTML代碼

<button id = 'btun' name = 'btun' onclick = 'changecolor();' class = 'btn btn-success btn-block'>Color Change</button>

和Javascript代碼

function below(t){
  var button = document.getElementById('btun');
  var quadrant = (t*t + 2*t + 1)+"px";
  console.log('ye');
  button.style.marginTop = quadrant;
  document.write(pix);
}
var doBelow = setInterval(below(t++),1);
if(t > 50){
  clearInterval(doBelow);
}

我找不到有什么不對。

setInterval甚至不能工作一次。 函數調用一次的原因是您在嘗試使用setInterval時調用它,並且在setInterval調用中使用函數的返回值( undefined )。

使用函數表達式創建一個調用below(t++)的區間。 您可以將檢查t > 50條件的代碼放在函數內部,否則它也只運行一次。

function below(t){
  var button = document.getElementById('btun');
  var quadrant = (t*t + 2*t + 1)+"px";
  console.log('ye');
  button.style.marginTop = quadrant;
  document.write(pix);
  if(t >= 50){
    clearInterval(doBelow);
  }
}

var doBelow = setInterval(function() { below(t++); },1);

注意:在間隔中使用document.write不是一個好主意。 在頁面完成后運行時,它將打開一個要寫入的新頁面來替換當前頁面。

setInterval期望將回調作為第一個參數,但是您正在調用實際函數。

通話應如下所示

 setInterval(function() {
      below(t++); }
  ,1);

所以在這里你要創建一個匿名回調,它將在下面調用你的函數。 並且最好將退出條件t >= 50置於函數below

暫無
暫無

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

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