0

我知道它非常基本,但我无法让它工作。它不断抛出“预期对象”错误......

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

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

4 回答 4

8

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

直接使用函数作为参数setTimeout()并摆脱 evil[TM] 字符串评估:

setTimeout(showMessage, 1000); 
于 2009-10-12T16:01:04.827 回答
6

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

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

function showMessage() { 
    alert('abc');
}
于 2009-10-12T15:57:37.050 回答
1

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

于 2009-10-12T16:04:53.120 回答
-2

您已将函数用引号括起来,因此它将其视为字符串,而不是它所期望的对象,因此,就像 SLaks 所说:

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

    function showMessage() { 
        alert('abc');
    } 
    });
于 2009-10-12T15:59:40.900 回答