setTimeout无法正常工作,我在这里遗漏了什么吗?

时间:2009-10-12 15:53:48

标签: javascript jquery settimeout

我知道它很基本,但我无法让它发挥作用。它不断抛出“预期的对象”错误......

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

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

4 个答案:

答案 0 :(得分:8)

你遇到了一个范围问题:showMessage()仅在匿名函数中可见,但是当setTimeout()的参数被评估时,运行时已经离开了范围。

直接使用函数作为setTimeout()的参数,摆脱邪恶的[TM]字符串评估:

setTimeout(showMessage, 1000); 

答案 1 :(得分:6)

setTimeout方法最好与函数一起使用,而不是字符串。因此,最好的方法是:

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

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

答案 2 :(得分:1)

问题是showMessage函数在ready事件中声明,而setTimeout(“showMessage()”,1000)将在全局范围内查找它。您可以将其声明移至全局范围,例如out of ready事件,或使用SLaks回答:setTimeout(showMessage,1000)

答案 3 :(得分:-2)

您已将函数包装在引号中,因此它将其视为字符串,而不是它所期望的对象,因此,就像SLaks所说:

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

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