Javascript 函数 setInterval() 只工作一次

Javascript Function setInterval() works only one time

本文关键字:一次 工作 函数 Javascript setInterval      更新时间:2023-09-26

伙计们!我想问一下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(function() {
      below(t++); }
  ,1);

所以在这里你创建一个匿名回调,它将在下面调用你的函数。最好将退出条件t >= 50 below函数中

setInterval甚至

一次都不起作用。函数被调用一次的原因是你在尝试使用setInterval时调用它,并且函数的返回值(undefined)在setInterval调用中使用。

使用函数表达式创建调用 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不是一个好主意。当它在页面完成后运行时,它将打开一个新页面进行写入,该页面将替换当前页面。