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 }
相關文章
相關標籤/搜索