您的位置:首页 > Web前端 > JavaScript

解决setTimeout传参类型的问题

2014-01-07 13:37 211 查看
原文链接:http://blog.163.com/leijiangjiahe@126/blog/static/121546792009713112844520/

 

window.setTimeout   方法是用来延迟执行某段函数(方法)的。但他对调用指定的方法并传参寸在一定缺陷。一般直接传参,只能传入字符传之类的参数,但对于Object类型的就无法直接传入,我的方法就是 重写window.setTimeout方法,利用apply回掉,进行传参,具体如下:

 <script type="text/javas
cript">

var _st = window.setTimeout;

//fRef 是test函数,mDelay是时间

window.setTimeout = function(fRef, mDelay) {

   if(typeof fRef == 'function'){ 

       var argu = Array.prototype.slice.call(arguments,2); 

       alert("argu "+argu);

       var f = (

            function(){

                fRef.apply(null, argu);

            }); 

       return _st(f, mDelay);

    }

    return _st(fRef,mDelay);

}

function test(x,y,z){

    alert(x+"  "+y+" "+z);

}

//第一个参数是要执行的函数,第二个参数是间隔时间,后面的参数是要传入的内容

window.setTimeout(test,1000,document.getElementById("d"),'abc','123');

</script>

非常好用~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  js