我正在尝试在使用“new”运算符创建的js对象中使用“setInterval”和“clearInterval”函数。
HTML:
<button onclick="testList.push(new Test());">run</button>
JS:
Test = function(){
this.y = 0;
this.dy = 10;
that = this;
this.interval = setInterval(function(){
that.y += that.dy;
if (that.y>300){
console.log(that.y); //prints y in console
clearInterval(that.interval);
}
}, 10);
}
当我点击“运行”按钮后,这就像我期望的那样工作。但是当我没有清除前一个间隔之前多次单击“运行”按钮时(快速多次单击该按钮),则不会清除间隔,并且y会无限增加。我在这里犯的错是什么?
提前谢谢你......
答案 0 :(得分:2)
您正在创建一个覆盖以前that
实例引用的全局变量Test
:
that = this;
声明变量时应使用var
关键字:
var that = this;