JS中setInterval、setTimeout不能传递带参数的函数的解决方案
更新时间:2013年04月28日 16:06:51 作者:
在JS中无论是setTimeout还是setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要带参数,接下来为大家介绍具体的解决方法
在JS中无论是setTimeout还是setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要带参数,
这就需要想方法解决。
一、采用字符串形式:——(缺陷)参数不能被周期性改变
setInterval("foo(id)",1000);
二、匿名函数包装 (推荐)
window.setInterval(function()
{
foo (id);
}, 1000);
这样就可以周期性执行foo(id)这个函数,而且把变量id传递进去;
三、定义返回无参函数的函数
function foo(id)
{
alert(id);
}
function _foo(id)
{
return function()
{
foo(id);
}
}
window.setInterval(_foo(id),1000);
这里定义了一个函数_foo,用于接收一个参数,并返回一个不带参数的函数,在这个函数内部使用了外部函数的参数,从而对其调用,不需要使用参数。
在 window. setInterval函数中,使用_foo(id)来返回一个不带参数的函数句柄,从而实现了参数传递的功能。
四、修改setInterval
function foo(id)
{
alert(id);
}
var _sto = setInterval;
window.setInterval = function(callback,timeout,param)
{
var args = Array.prototype.slice.call(arguments,2);
var _cb = function()
{
callback.apply(null,args);
}
_sto(_cb,timeout);
}
window.setInterval(hello,3000,userName);
以上的所有方法也适合setTimeout。
这就需要想方法解决。
一、采用字符串形式:——(缺陷)参数不能被周期性改变
setInterval("foo(id)",1000);
二、匿名函数包装 (推荐)
复制代码 代码如下:
window.setInterval(function()
{
foo (id);
}, 1000);
这样就可以周期性执行foo(id)这个函数,而且把变量id传递进去;
三、定义返回无参函数的函数
复制代码 代码如下:
function foo(id)
{
alert(id);
}
function _foo(id)
{
return function()
{
foo(id);
}
}
window.setInterval(_foo(id),1000);
这里定义了一个函数_foo,用于接收一个参数,并返回一个不带参数的函数,在这个函数内部使用了外部函数的参数,从而对其调用,不需要使用参数。
在 window. setInterval函数中,使用_foo(id)来返回一个不带参数的函数句柄,从而实现了参数传递的功能。
四、修改setInterval
复制代码 代码如下:
function foo(id)
{
alert(id);
}
var _sto = setInterval;
window.setInterval = function(callback,timeout,param)
{
var args = Array.prototype.slice.call(arguments,2);
var _cb = function()
{
callback.apply(null,args);
}
_sto(_cb,timeout);
}
window.setInterval(hello,3000,userName);
以上的所有方法也适合setTimeout。
您可能感兴趣的文章:
- JS中setTimeout()的用法详解
- JS延迟加载(setTimeout) JS最后加载
- Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
- js函数setTimeout延迟执行的简单介绍
- JavaScript window.setTimeout() 的详细用法
- js setTimeout 参数传递使用介绍
- JavaScript SetInterval与setTimeout使用方法详解
- Js中setTimeout()和setInterval() 何时被调用执行的用法
- JavaScript中SetInterval与setTimeout的用法详解
- 如何通过setTimeout理解JS运行机制详解
相关文章
原生javascript+css3编写的3D魔方动画旋扭特效
这篇文章主要介绍了原生javascript+css3编写的3D魔方动画旋扭特效的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2016-03-03
JavaScript style对象与CurrentStyle对象案例详解
这篇文章主要介绍了JavaScript style对象与CurrentStyle对象案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下2021-08-08
Object.defineProperty()函数之属性描述对象
这篇文章主要介绍了Object.defineProperty()函数之属性描述对象,JavaScript 提供了一个内部数据结构,用来描述对象的属性,控制它的行为,比如该属性是否可写、可遍历等等。这个内部数据结构称为:属性描述对象2022-09-09
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
这篇文章主要介绍了Javascript学习之谈谈JS的全局变量跟局部变量虽然脚本之家小编以前发过,但还是这篇文章整理的比较好,需要的朋友可以参考一下2016-08-08
Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数
这篇文章主要介绍了Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数的实现代码,需要的朋友可以参考下2017-09-09


最新评论