您的位置:首页 > 编程语言 > Java开发

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

2008-01-22 09:22 405 查看
最近改进了一下以前写的多幅图片轮流切换展示的代码,以前只是以类的方式整合到了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对象级别(可以级级向下关联获取到)的引用
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐