setTimeOut传参数

  最近,因项目须要,须要实现setTimeOut传参数的功能,搜索了不少的资源。终于找到一个比较好的方法了,记录下来,与你们分享。javascript

  不管是window.setTimeOut仍是window.setInterval,在使用函数名做为调用句柄是都不能带参数。java

  先看一段简单的javascript代码:函数

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

  代码结果是:1秒中以后输出Hello World,但若是改为:this

1 setTimeout(show(),1000);

  会当即输出结果,达不到延时的目的。但若是加上引号(双引号或单引号)就能够了,如:spa

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

  但若是加上参数又不能够了,如:debug

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

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

 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事件blog

  解决方法:事件

 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 }
相关文章
相关标签/搜索