簡體   English   中英

setTimeout不起作用,我在這里錯過了什么嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM