作者fillano (冒牌费大公)
看板Ajax
标题Re: [问题] 关於物件与计时器
时间Wed Mar 12 11:58:25 2008
※ 引述《fillano (冒牌费大公)》之铭言:
: 这是scope解析问题。
: setTimeout, setInterval是window物件底下的函数,你在里面用到this
: 这个this会指到window而不是你想的地方。
: 你可以先把this传给一个区域变数,然後在setTimeout或setInterval中用这个变数
: 例如:
: addtext=function(){
: this.add=function(){
: document.getElementById('test').value+='a';
: var thisref = this;
: setTimeout(thisref.add(),1000);
: }
: }
发现写的有错,黑黑,测试过以後改写了一下,用原po的例子:
(不过改了一点,让它只跑十次)
<html>
<body>
<input id="test" type="text" >
<script>
addtext=function(){
this.count = 0;
this.tid = null;
var ref = this;
this.add=function(){
if (ref.count==0) {
ref.tid = setInterval(ref.add,1000);
}
ref.count ++;
if (ref.count > 10) {
clearInterval(ref.tid);
ref.count = 0;
return;
}
document.getElementById('test').value+='a';
}
}
var myobj = new addtext();
myobj.add();
</script>
</body>
</html>
--
Sapere Aude! 这就是启蒙运动的口号!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.250.95.16