[英]setTimeout not working,am I missing something here?
我知道它非常基本,但是我無法使其正常工作。 它不斷拋出“期望的對象”錯誤...
$(document).ready(function(){
setTimeout('showMessage()', 1000);
function showMessage() {
alert('abc');
}
});
您遇到了一個范圍界定問題: showMessage()
僅在使用匿名函數時才可見,但是當setTimeout()
的參數被求值時,運行時已經離開了作用域。
直接使用該函數作為setTimeout()
參數,並擺脫Evil [TM]字符串評估:
setTimeout(showMessage, 1000);
setTimeout
方法最好與函數而不是字符串一起使用。 因此,最好的方法是這樣的:
$(document).ready(function() {
setTimeout(showMessage, 1000);
});
function showMessage() {
alert('abc');
}
問題是showMessage函數在ready事件中聲明,並且setTimeout(“ showMessage()”,1000)將在全局范圍內查找它。 您可以將其聲明移至全局范圍,例如,退出就緒事件,或使用SLaks答案:setTimeout(showMessage,1000)
您已將函數包裝在引號中,因此它會將其視為字符串,而不是預期的對象,因此,就像SLaks所說的那樣:
$(document).ready(function(){
setTimeout(showMessage, 1000);
function showMessage() {
alert('abc');
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.