javascrip setInterval 函数在一个对象内部的调用问题

最近改进了一下以前写的多幅图片轮流切换展示的代码,以前只是以类的方式整合到了dojo,并且在使用时必须显式调用window.setInterval方法。

这样有下面两个缺点:1 需要指定各个存放显示数据容器的名称或者传递引用进去。

                                        2 必须显式调用window.setInterval方法才能开始循环。

很麻烦。

现在将它做成了widget,只需要传递进需要展示的数据以及循环间隔描述就可以了。

制作widget的方法就不说了,但在其中遇见了一个问题,那就是:

在一个widget(可以看做是一个javascript对象)中,如何定时循环执行当前对象的方法呢? 

直接用window.setInterval("this.doXXX()",5)是无法执行的。虽然在这里我觉得this代表的应该是当前的widget,但好像javascript不是这样认为的。

按照他的理解,估计是将this当作了window对象了??

于是只能采取另一种思路:如果在最外层,也就是直接在页面上获取到当前的widget对象不就成了么?

那么,如何取到当前widget对象很简单的,通过dijit.byId(),就可以了。

所以,我这样写:

postCreate: function(){

            ……………………
           setInterval("dijit.byId('"+this.id+"').rollerAd.showNext()",this.rollerAd.chandeSecond*1000);   

          ………………

                        
 }

果然没有问题了。

小结:目前认为使用window.setInterval();中的方法必须是能够从window对象这一级别向下一级级取到的。所以想在一个对象内部定义一个setInterval,必须拥有这个对象在window对象级别(可以级级向下关联获取到)的引用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值