JQuery中SetTimeOut傳參問題

無論是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>

 

發佈留言