首页 > 代码库 > setTimeOut传参数

setTimeOut传参数

  最近,因项目需要,需要实现setTimeOut传参数的功能,搜索了很多的资源。终于找到一个比较好的方法了,记录下来,与大家分享。

  无论是window.setTimeOut还是window.setInterval,在使用函数名作为调用句柄是都不能带参数。

  先看一段简单的javascript代码:

1 function show()2 {3   alert("Hello World");4 }  5 setTimeout(show,1000);

  代码结果是:1秒中之后输出Hello World,但如果改成:

1 setTimeout(show(),1000);

  会立即输出结果,达不到延时的目的。但如果加上引号(双引号或单引号)就可以了,如:

1 setTimeout("show()",1000);

  但如果加上参数又不可以了,如:

1 setTimeout("show(name)",1000);

  可通过以下方法来解决以上问题:写一个函数,并返回一个不带参数的函数。代码如下:

 1 <script language="javascript">   2     function show(name)   3     { 4         alert("Hello World:" + name); 5     }   6     function _show(name)   7     {   8         return function()   9         {  10             show(name);  11         }  12     }  13     setTimeout(_show(name),1000);  14 </script>

 

  需求:1.setTimeOut传参数 2.动态设置onclick事件

  解决方法:

 1 function timeClick(obj)     2 {     3     //   var obj=document.getElementById(‘‘);     4     obj.style.backgroundColor="gray";     5     obj.onclick=function(){ return false;};     6     setTimeout(function(){resetbgColor(obj);},3000);     7 }     8             9 function resetbgColor(obj)    10 {    11      //  var obj=document.getElementById(‘‘);    12     obj.style.backgroundColor="blue";    13      //   $(‘#‘+‘‘).click(timeClick);    14      //  debugger;    15     obj.onclick=function(){    16     timeClick(this);    17     };    18 }

 

setTimeOut传参数