JQuery中SetTimeOut傳參問題探討

來源:互聯網
上載者:User

無論是window.setTimeout還是window.setInterval,在使用函數名作為調用控制代碼時都不能帶參數。如果想要傳入參數,自訂參數也好,事件參數event也好,解決辦法是在此函數的基礎上在做一層封裝。其具體原理還不清楚,但是下邊的辦法確實能解決這個問題。
先看一個簡單的代碼
複製代碼 代碼如下:
function show(){
alert("Hello World");
}
setTimeout(show,1000);

這段代碼的效果是在1秒後顯示hello world,但是如果改成
setTimeOut(show(),1000);
就會立即顯示,達不到延時的效果了。但是如果加上引號就可以了。如:
setTimeOut("show()",1000);
就可以了。但是如果帶上參數的話,還是不行比如:
setTimeOut("show(name)",1000)
這時就了一個比較的方法,就是再寫個函數,該函數返回一個不帶參數的函數,具體如下:
複製代碼 代碼如下:
script language="javascript">
function show(name)
{alert("Hello World:" + name);}
function _show(name)
{
return function()
{
show(name);
}
}
setTimeout(_show(name),1000);
function
</script>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.