SetTimeout运行不正常
SetTimeout not functioning properly
此代码同时运行所有21个控制台日志。然而,它应该以设定的间隔一次运行一个。有什么建议吗?
var index = 1;
var switchBG = function(num){
if( num < 22 ){
console.log('index' + index);
console.log('num' + num);
index++;
function_timer(index);
}
};
var timer;
var function_timer = function(index){
clearTimeout(timer);
timer = setTimeout(switchBG(index), 10000);
};
您需要将函数作为参数传递给setTimeout
。试试这个:
timer = setTimeout(function() {
switchBG(index);
}, 10000);
执行setTimeout(switchBG(index), 10000);
基本上评估switchBG(index)
并将其返回值(当前为undefined
)传递给setTimeout
。
当你这样做时:
setTimeout(switchBG(index), 10000);
您将立即调用switchBG(index)
,然后将其返回值(即undefined
)传递给setTimeout
。相反,您希望传递一个函数引用,然后将附加参数传递给setTimeout
:
setTimeout(switchBG, 10000, index);
如果你想像在Internet Explorer中那样使用setTimeout
的附加参数,你需要填充它。它可以在没有填充的其他浏览器中工作。
如果你想支持IE,又不想使用填充程序,你可以创建一个额外的匿名函数来实现同样的结果:
setTimeout(function(){ switchBG(index); }, 10000);
相关文章:
- 脚本点击Css显示属性更改不正常运行Asp.net
- 为什么代码在jsfiddle上运行良好,但在我的dreamweaver上却不正常
- node.js在端口8080上运行不正常
- HTML Javascript-setInterval运行不正常
- 电子邮件验证功能运行不正常
- 小提琴在单击链接时在结果面板中显示 JSFiddle 登录(而不是正常运行)
- jquery测试函数运行不正常
- Wordpress的PHP计算器运行不正常
- 事件侦听器属性运行不正常
- JavaScript在JSReport中运行不正常
- metro.js应用程序在本地主机上正常运行,但不在服务器上运行
- Canvas元素运行不正常
- JQuery函数代码运行不正常
- 我的程序不能正常运行
- IE不能正常运行远程JS,但本地运行良好
- js定时器不能正常运行
- jQuery append()在xml加载器中不能正常运行
- Gruntjs不能在sass上正常运行
- Javascript函数不能正常运行,并且只显示了1秒的对话框
- jQuery在一个地方正常运行,但在另一个地方不正常