为什么这个setInterval没有工作?

时间:2011-09-12 21:28:06

标签: javascript setinterval

代码:

setInterval("doSomething()", 2000);
function doSomething(){alert('hi')}

演示:http://jsfiddle.net/PRff7/

我一直reading about this而且我无法让这个例子起作用:(

4 个答案:

答案 0 :(得分:8)

由于jsfiddle,您的代码未执行。它将您的代码包装在onload处理程序中,从而将doSomething保留在全局命名空间之外。因此,当setTimeout尝试执行您的代码时,它找不到doSomething。更改jsfiddle以执行“no wrap”,一切顺利:http://jsfiddle.net/gilly3/PRff7/3/

如果您未将字符串中的doSomething打包,它也会有效,因为setInterval会直接引用同一范围内的doSomething。它不需要全局参考。

答案 1 :(得分:3)

您需要将其更改为

setInterval(doSomething, 2000);
function doSomething(){alert('hi')}

答案 2 :(得分:2)

您不应将字符串传递给setInterval

相反,传递函数本身:

setInterval(doSomething, 1000);

答案 3 :(得分:1)

如果您希望将代码保留为内联,而不是将其委托给某个命名函数(特别是如果代码包含多个命令),请使用:

setInterval( function(){ alert('hi'); alert('hello') }, 2000);
相关问题