当前位置: 代码迷 >> Web前端 >> 给定时器settimeout、setInterval调用传接参数
  详细解决方案

给定时器settimeout、setInterval调用传接参数

热度:191   发布时间:2013-01-26 13:47:02.0
给定时器settimeout、setInterval调用传递参数

使window.setTimeout/window.setInterval执行带参数的函数的方式(以setTimeout为例):

1.使用字符串形式.

如:window.setTimeout("alert('ok')",1000);

????? 或

??? var msg = "ok";
??? window.setTimeout("alertMsg(msg)", 1000);
??? function alertMsg(pmsg) {
??????? alert(pmsg);
??? }

2.借助嵌套匿名函数.

如:window.setTimeout(helpFn("ok"), 1000);
??? function helpFn(pmsg) { return function() { alert(pmsg); } }

3.修改原 window.setTimeout

如:

//*=============================================================
//*?? 功能: 修改 window.setTimeout,使之可以传递参数和对象参数???
//*?? 方法: setTimeout(回调函数,时间,参数1,,参数n)? 参数可为对象:如数组等
//*=============================================================?

??? window.setTimeout = function(callback, timeout, param) {
??????? var args = Array.prototype.slice.call(arguments, 2);
??????? setTimeout(function() { callback.apply(null, args); }, timeout)
??? }
??? window.setTimeout(alertMsg, 1000, "ok");
??? function alertMsg(pmsg) {alert(pmsg);}