|
无论是window.setTimeout还是window.setInterval,在使用函数名作为调用句柄时都不能带参数,解决办法是在此函数的基础上在做一层封装
无论是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>
|
|