• 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 }
  • 相关阅读:
    给读者、学生、初学者的话(不管你买哪一本计算机书,都适用)
    [回忆]我是怎么落进「写程序」这个大火坑的?
    CF1093E [Intersection of Permutations]
    CF712E [Memort and Casinos]
    CF1093G [Multidimensional Queries]
    FFT与一些冷门问题
    平面图转对偶图&19_03_21校内训练 [Everfeel]
    19_03_26校内训练[魔法卡片]
    洛谷 P4515 [COCI20092010#6] XOR
    NTT模板(无讲解)
  • 原文地址:https://www.cnblogs.com/iyitong/p/4214276.html
Copyright © 2020-2023  润新知