/***********************************
*Author:Java619
*Time:2006-08
************************************/
也许你过去在setTimeout中传参数一直是这样
setTimeout("pass(" + argu + ")",1000)
这样只能传字符串,对传递object就无能为力了,需要大费文章.然而别忘了,第一个参数还可以是function
下面举个实例:
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
>
< HTML >
< HEAD >
< TITLE > 向setTimeout传递函数参数 </ TITLE >
</ HEAD >
< script type ="text/javascript" > ...
var _st = window.setTimeout;
window.setTimeout = function(fRef, mDelay) ...{
if(typeof fRef == 'function')...{
var argu = Array.prototype.slice.call(arguments,2);
var f = (function()...{ fRef.apply(null, argu); });
return _st(f, mDelay);
}
return _st(fRef,mDelay);
}
function hello(x,y)...{
alert(x+" "+y);
}
window.setTimeout(hello,1000,'Hello','Ceun');
</ script >
< BODY >
</ BODY >
</ HTML >
< HTML >
< HEAD >
< TITLE > 向setTimeout传递函数参数 </ TITLE >
</ HEAD >
< script type ="text/javascript" > ...
var _st = window.setTimeout;
window.setTimeout = function(fRef, mDelay) ...{
if(typeof fRef == 'function')...{
var argu = Array.prototype.slice.call(arguments,2);
var f = (function()...{ fRef.apply(null, argu); });
return _st(f, mDelay);
}
return _st(fRef,mDelay);
}
function hello(x,y)...{
alert(x+" "+y);
}
window.setTimeout(hello,1000,'Hello','Ceun');
</ script >
< BODY >
</ BODY >
</ HTML >
现在向setTimeout中传递带参数的函数是不是方便多了,其实就是重载了下window.setTimeout
用apply去回调前面的函数。