2009-10-12 51 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)

相關問題