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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM