2010-07-24 83 views
2

我有一个问题,setTimeout ..我不知道为什么,这是不行的..setTimeout的问题

$(document).ready(function(){ 
var counterNum = 0; 

function tick() 
{   
    addText(counterNum); 
    setTimeout('tick()',1000); 
    counterNum++; 
} 

function addText(strNum) 
{ 
$("div.counter").empty(); 
$("div.counter").append(strNum);   
} 
});​ 

,你可以在这里检查它的实时预览LINK

也先生,这是

setTimeout('tick()',1000); 

setTimeout(tick(),1000); 
之间的区别

回答

4

尝试:

$(document).ready(function(){ 
var counterNum = 0; 

function tick() 
{   
    addText(counterNum); 
    setTimeout(tick,1000); 
    counterNum++; 
} 

function addText(strNum) 
{ 
$("div.counter").empty(); 
$("div.counter").append(strNum+""); 

} 

tick(); 

});

setTimeout('tick()',1000) 

setTimeout(tick(), 1000) 

之间的区别是,第二个将不等待1000毫秒执行,但如果你把它改成

setTimeout(tick, 1000) 

这将是实际上是一样的。从技术上讲,它会改变函数的调用范围。

1

在传递字符串的情况下JavaScript必须评估它以运行您的代码。随着setTimeout的你应该总是用这样的模式:

var self = this; 
setTimeout(function(){tick();},1000); 

这给你关闭,并允许你绕过一个事实,即使用setTimeout的变化这是什么是全局对象窗口(开发商nastly小惊喜他们第一次遇到它)。

尝试与Fredrik推荐的组合,你应该状态良好。