setInterval()会使得已经调用的This改变指向吗?

AvaRich 2009-07-22 11:25:24
下面这段代码困扰我很久,只有o1的时候可以正常调用,有了o2之后,o1就不显示了,而o2的递增速度是o1的两倍。
对o2使用了setTimeout()后,看出调用了o2.start()后似乎o1.roll()中的This也指向了o2。
请高手指点一下。

<div id="box">
<div id="id1"></div>
<div id="id2"></div>
</div>

<script type="text/javascript">
function tryoo()
{
this.id="";
this.value=0;
this.start=function()
{
th=this;
setInterval("th.roll("+this.id+")",100)
}
this.roll=function(id)
{
document.getElementById(this.id).innerHTML=this.id+"="+this.value;
this.value++;
}
}

o1=new tryoo();
o1.id="id1";
o1.start();

o2=new tryoo();
o2.id="id2";
setTimeout("o2.start()",5000);

</script>
...全文
80 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
AvaRich 2009-07-23
  • 打赏
  • 举报
回复
还是希望可以直接用.start()设置setInterval(),否则n个实例要每个都去设Interval,而且.start()也没意义了。
AvaRich 2009-07-23
  • 打赏
  • 举报
回复
但是 在 th 前面加 var 限定作用域之后,直接不运行了。try也try不出个所以然。
高手请继续。
virus7581 2009-07-23
  • 打赏
  • 举报
回复

<script type="text/javascript">
function tryoo()
{
this.id="";
this.value=0;
this.start=function()
{
this.roll();
}
this.roll=function()
{
document.getElementById(this.id).innerHTML=this.id+"="+this.value;
this.value++;
}
}

o1=new tryoo();
o1.id="id1";
setInterval("o1.start()",100);

o2=new tryoo();
o2.id="id2";
setInterval("o2.start()",200);

</script>

看看这样符合要求吗
virus7581 2009-07-22
  • 打赏
  • 举报
回复
[Quote=引用楼主 avarich 的回复:]
下面这段代码困扰我很久,只有o1的时候可以正常调用,有了o2之后,o1就不显示了,而o2的递增速度是o1的两倍。
对o2使用了setTimeout()后,看出调用了o2.start()后似乎o1.roll()中的This也指向了o2。
请高手指点一下。

<div id="box">
    <div id="id1"> </div>
    <div id="id2"> </div>
</div>

<script type="text/javascript">
    function tryoo()
        {
this.id="";
this.value=0;
this.start=function()
    {
    th=this;
    setInterval("th.roll("+this.id+")",100)
    }
this.roll=function(id)
    {
    document.getElementById(this.id).innerHTML=this.id+"="+this.value;
    this.value++;
    }
        }

o1=new tryoo();
o1.id="id1";
o1.start();

o2=new tryoo();
o2.id="id2";
setTimeout("o2.start()",5000);

</script>
[/Quote]
红色的部分,你这么用是定义了一个全局对象,你后面创建的所有对象都指向它

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧