提示:setTimeout() 只執行 code 一次。如果要多次調用,請使用 setInterval() 或者讓 code 自身再次調用 setTimeout()。 也許你曾碰到過這樣的問題,不管是setInterval()還是setTimeout(),當code參數里放一個帶參函數時,定時器都會失效,看下面這個例子: 代碼如下: function test(str){ alert(str); } var a = "abcde" setTimeout(test(a),3000);
執行上面代碼,頁面不會延遲3秒調用test(a),而是會立即執行test(a),IE、FF、Chrome下都會出現這個問題,如果你經常用到定時器,這個問題應該應該經常會碰到,那么要怎樣去解決呢? 筆者在這里歸納兩種常用的解決方法,當然應該也還有其他的解決方法,在這里就不一一贅述。 方法1:用匿名函數包裹 代碼如下: function test(str){ alert(str); } var a = "abcde" setTimeout(function(){ test(a); },3000);
方法2:用引號包裹需調用的函數 代碼如下: function test(str){ alert(str); } var a = "abcde" setTimeout("test('+a+')",3000);