setTimeOut传参数(转)

本文详细介绍了在JavaScript中使用setTimeout函数时遇到的问题及解决方案,包括如何在不带参数的情况下实现延时调用带有参数的函数,以及利用闭包技巧解决动态设置onclick事件和setTimeout传参问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

突然想到在一个函数中延时调用另外一个函数,在JQuery1.3.2中没有发现相应方法,在网上搜索,搜集如下,特做个完整保存: 

(1)转自: http://blog.youkuaiyun.com/nsrainbow/article/details/2370329  原文如下 

无论是window.setTimeout还是window.setInterval,在使用函数名作为调用句柄时都不能带参数。 

先看一个简单的代码: 

Javascript代码   收藏代码
  1. function show(){      
  2.     alert("Hello World");  
  3. }  
  4. setTimeout(show,1000);  


这段代码的效果是在1秒后显示hello world,但是如果改成 

setTimeOut(show(),1000); 

就会立即显示,达不到延时的效果了。但是如果加上引号就可以了。如: 

setTimeOut("show()",1000); 

就可以了。但是如果带上参数的话,还是不行比如: 

setTimeOut("show(name)",1000) 

这时就了一个比较的方法,就是再写个函数,该函数返回一个不带参数的函数,具体如下: 

Javascript代码   收藏代码
  1. <script language="javascript">  
  2.     function show(name)  
  3.     {alert("Hello World:" + name);}  
  4.   
  5.     function _show(name)  
  6.     {  
  7.         return function()  
  8.         {  
  9.             show(name);  
  10.         }  
  11.     }  
  12.     setTimeout(_show(name),1000);  
  13. </script>  


(2)转自 http://blog.youkuaiyun.com/huanglan513/article/details/5669912  原文如下 


setTimeout传参数问题,弄了很久,终于解决了,O(∩_∩)O哈! 




view plain 
Javascript代码   收藏代码
  1. function timeClick(obj)    
  2.        {    
  3.         //   var obj=document.getElementById('');    
  4.            obj.style.backgroundColor=&quot;gray&quot;;    
  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=&quot;&quot;;    
  13.         //   $('#'+'').click(timeClick);    
  14.       //  debugger;    
  15.            obj.onclick=function(){    
  16.                timeClick(this);    
  17.            };    
  18.        }    


          我发现这句还真是万能啊,太服了,  function(){ method(param);}  

          这里两个地方都用到了,解决了我的所有问题,1.setTimeout传参数 2.动态设置onclick事件  

         setTimeout(function(){resetbgColor(obj);},3000);  


          obj.onclick=function(){ 
                timeClick(this); 
            };
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值