怎么定时调用啊 谢谢

似梦飞花 2012-02-23 08:42:52
var a={
total:8,
x:function(){
this.total--;
document.getElementsByTagName("input")[0].value=this.total;
window.setTimeout(this.x(),1000);
},
m:function(){
window.setInterval(,1000);
}
}
...全文
86 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
似梦飞花 2012-02-23
  • 打赏
  • 举报
回复
还是不行啊 麻烦高手给写个简单的例子吧 万分感谢 最好是在对象里又定义了一个方法 该方法是用来定时的调用该对象里的另外一个方法 能传参最好 谢谢 谢谢
未知数 2012-02-23
  • 打赏
  • 举报
回复
没注意你的代码还有问题,更正:

把this.x作为参数传递给setTimeout后,将在全局调用,因此第一句中this是不能指向a对象的,更改如下:
x:function(total){
total--;
if(total<0) return;
document.getElementsByTagName("input")[0].value=this.total;
window.setTimeout(function(){this.x(total);},1000);
}
调用把a.total作为参数调用函数就可以了
buzhidao945 2012-02-23
  • 打赏
  • 举报
回复
使用 timer控件
未知数 2012-02-23
  • 打赏
  • 举报
回复

var a={
total:8,
x:function(){
this.total--;
document.getElementsByTagName("input")[0].value=this.total;
window.setTimeout(this.x(),1000);//这句写错了,第一个参数应该是一个函数,你这样写传的是函数的返回值,把x后面的括号去掉;并且这句属于递归调用,但是这个递归没有出口条件,要加上,避免无限递归,可在第一句下面加上:if(this.total<0) return;就可以了

},
m:function(){
window.setInterval(,1000);//同样,这也是错的
}
}
Acesidonu 2012-02-23
  • 打赏
  • 举报
回复
似梦飞花 2012-02-23
  • 打赏
  • 举报
回复
谢谢 明白
未知数 2012-02-23
  • 打赏
  • 举报
回复
额,例子:

var a={
total:8,
x:function(){
window.setInterval(function(){a.y(a.total);},2000);//定时调用y方法,并传递参数
},
y:function(index){alert(index);}
}
a.x();

87,901

社区成员

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

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