最近,因项目须要,须要实现setTimeOut传参数的功能,搜索了不少的资源。终于找到一个比较好的方法了,记录下来,与你们分享。javascript
不管是window.setTimeOut仍是window.setInterval,在使用函数名做为调用句柄是都不能带参数。java
先看一段简单的javascript代码:函数
1 function show() 2 { 3 alert("Hello World"); 4 } 5 setTimeout(show,1000);
代码结果是:1秒中以后输出Hello World,但若是改为:this
1 setTimeout(show(),1000);
会当即输出结果,达不到延时的目的。但若是加上引号(双引号或单引号)就能够了,如:spa
1 setTimeout("show()",1000);
但若是加上参数又不能够了,如:debug
1 setTimeout("show(name)",1000);
可经过如下方法来解决以上问题:写一个函数,并返回一个不带参数的函数。代码以下:code
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事件blog
解决方法:事件
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 }