大家好,又见面了,我是全栈君。
unction test(s)
{
alert(s);
}
window.setTimeout(function(){test('str');},1000);这样就可以了… 为什么是这样呢. 因为setTimeout要求的第一个参数是函数…比如setTimeout(a_fun,1000)这样是可以的,a_fun是一个函数. 但是setTimeout(a_fun(),1000);这样就不行了.因为这里a_fun()其实是函数的返回值了…这样讲应该能明白了. 另外,不推荐网上有人用的方法setTimeout(‘test(1)’,1000);这样的形式,因为这个有很多情况下是不实用的. 如果实在要用这种方法,只能这样:setTimeout(“test(‘”+param+”‘)”,100);这种方式。
还有一种方法:
function timeClick(obj)
{
// var obj=document.getElementById('');
obj.style.backgroundColor="gray";
obj.onclick=function(){ return false;};
setTimeout(function(){resetbgColor(obj);},3000);
}
function resetbgColor(obj)
{
// var obj=document.getElementById('');
obj.style.backgroundColor="";
// $('#'+'').click(timeClick);
// debugger;
obj.οnclick=function(){
timeClick(this);
};
} 我发现这句还真是万能啊,太服了, function(){ method(param);}
这里两个地方都用到了,解决了我的所有问题,1.setTimeout传参数 2.动态设置onclick事件
setTimeout(function(){resetbgColor(obj);},3000);
obj.οnclick=function(){ timeClick(this); };
还有一种方法:
<script language="JavaScript" type="text/javascript">
<!--
var userName="jack";
//根据用户名显示欢迎信息
function hello(_name){
alert("hello,"+_name);
}
//创建一个函数,用于返回一个无参数函数
function _hello(_name){
return function(){
hello(_name);
}
}
window.setTimeout(_hello(userName),3000);
//-->
</script>这 里定义了一个函数_hello,用于接收一个参数,并返回一个不带参数的函数,在这个函数内部使用了外部函数的参数,从而对其调用,不需要使用参数。在 window.setTimeout函数中,使用_hello(userName)来返回一个不带参数的函数句柄,从而实现了参数传递的功能。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/108556.html原文链接:https://javaforall.cn