2009-10-12 84 views

回答

-2

你已经包裹你的报价功能,所以它把它像一个字符串,而不是因为它的预期目标,因此,像SLaks说:

$(document).ready(function(){ 
    setTimeout(showMessage, 1000); 

    function showMessage() { 
     alert('abc'); 
    } 
    }); 
+0

如果提供downvote,请提供原因。我在这里没有看到原因。 – Ascalonian 2009-10-12 16:09:37

+4

我没有downvote,但是有人做的原因很可能是'setTimeout()'的字符串参数非常好:问题在于变量的可见性 – Christoph 2009-10-12 16:10:02

6

setTimeout方法最好用的功能,而不是字符串使用。因此,要做到这一点,最好的办法是这样的:

$(document).ready(function() { 
    setTimeout(showMessage, 1000); 
}); 

function showMessage() { 
    alert('abc'); 
} 
+1

+1,因为你展示了一个工作示例 – Evildonald 2009-10-12 16:29:06

+1

+1为“最佳使用”,正确暗示它可以与字符串一起使用(但是,当然,不应该)。 – 2009-11-08 02:18:32

8

你已经有了一个范围问题:showMessage()才可见withing匿名函数,但是当参数setTimeout()获取评估,运行时已经离开的范围。

使用功能直接作为参数传递给setTimeout(),摆脱邪恶[TM]字符串评价:

setTimeout(showMessage, 1000); 
1

的问题是ShowMessage函数,在ready事件和setTimeout的(“showMessage(内声明)“,1000)将在全局范围内查找它。您可以将其声明移至全局范围,例如没有准备好的事件,或者使用SLaks的答案:setTimeout(showMessage,1000)

相关问题