zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    黄聪:数据库基础
    黄聪:(C#)利用反射动态调用类成员[转载]
    黄聪:SQL 2005 全文索引
    黄聪:自动化测试的7个步骤
    黄聪:队列Queue笔记
    黄聪:VMware三种网络连接方式的概念
    Nginx 模块细节详探
    munin因为plugin而亮
    Zookeeper简介
    Munin进阶使用
  • 原文地址:https://www.cnblogs.com/iyitong/p/4214276.html
Copyright © 2011-2022 走看看