无论是window.setTimeout还是window.setInterval,在使用函数名作为调用句柄时都不能带参数。
先看一个简单的代码:
function show(){
alert("Hello World");
}
setTimeout(show,1000);
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 >
function show(name)
...{alert("Hello World:" + name);}
function _show(name)
...{
return function()
...{
show(name);
}
}
setTimeout(_show(name),1000);
function
</ script >
参考:http://www.cnblogs.com/chinahnzl/articles/612147.html
PS:js真是个折腾人的东西啊