• 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 }
  • 相关阅读:
    java基础16 捕获、抛出以、自定义异常和 finally 块(以及关键字:throw 、throws)
    java基础15 内部类(成员内部类、局部内部类)和匿名内部类
    java基础14 多态(及关键字:instanceof)
    java基础13 接口(及关键字:interface、implements)
    Java 线程控制
    Java 多线程创建和线程状态
    Java New IO
    Java IO流
    Java 集合和泛型
    Java 动态代理
  • 原文地址:https://www.cnblogs.com/iyitong/p/4214276.html
Copyright © 2020-2023  润新知