JS中setInterval、setTimeout不能传递带参数的函数的解决方案


Posted in Javascript onApril 28, 2013

在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。
Javascript 相关文章推荐
清除网页历史记录,屏蔽后退按钮!
Dec 22 Javascript
js控制href内容的连接内容的变化示例
Apr 30 Javascript
浅谈页面装载js及性能分析方法
Dec 09 Javascript
javascript实现 百度翻译 可折叠的分享按钮列表
Mar 12 Javascript
jquery利用拖拽方式在图片上添加热链接
Nov 24 Javascript
JS 插件dropload下拉刷新、上拉加载使用小结
Apr 13 Javascript
了解VUE的render函数的使用
Jun 08 Javascript
jQuery+koa2实现简单的Ajax请求的示例
Mar 06 jQuery
layui的面包屑或者表单不显示的解决方法
Sep 05 Javascript
vue仿淘宝滑动验证码功能(样式模仿)
Dec 10 Javascript
vue使用Sass时报错问题的解决方法
Oct 14 Javascript
如何管理Vue中的缓存页面
Feb 06 Vue.js
jquery在IE、FF浏览器的差别详细探讨
Apr 28 #Javascript
js自动下载文件到本地的实现代码
Apr 28 #Javascript
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
Apr 27 #Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
Apr 27 #Javascript
JQuery onload、ready概念介绍及使用方法
Apr 27 #Javascript
用jquery实现输入框获取焦点消失文字
Apr 27 #Javascript
javascript中强制执行toString()具体实现
Apr 27 #Javascript
You might like
分享一个超好用的php header下载函数
2014/01/31 PHP
Php中使用Select 查询语句的实例
2014/02/19 PHP
PHP中is_file不能替代file_exists的理由
2014/03/04 PHP
微信封装的调用微信签名包的类库
2017/06/08 PHP
PHP实现的ID混淆算法类与用法示例
2018/08/10 PHP
PHP实现字符串的全排列详解
2019/04/24 PHP
基于jQuery的日期选择控件
2009/10/27 Javascript
JQuery 拾色器插件发布-jquery.icolor.js
2010/10/20 Javascript
javascript之typeof、instanceof操作符使用探讨
2013/05/19 Javascript
JavaScript实现表格排序方法
2013/06/14 Javascript
js获取光标位置和设置文本框光标位置示例代码
2014/01/09 Javascript
JS动态增加删除UL节点LI及相关内容示例
2014/05/21 Javascript
javascript实现简单的分页特效
2015/08/12 Javascript
【经典源码收藏】基于jQuery的项目常见函数封装集合
2016/06/07 Javascript
vue实现的双向数据绑定操作示例
2018/12/04 Javascript
node.js使用express框架进行文件上传详解
2019/03/03 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
js实现简单掷骰子效果
2019/10/24 Javascript
js消除图片小游戏代码
2019/12/11 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
2020/07/17 Javascript
Vue 实现拨打电话操作
2020/11/16 Javascript
[46:38]完美世界DOTA2联赛PWL S2 Magma vs PXG 第三场 11.28
2020/12/02 DOTA
Python遍历zip文件输出名称时出现乱码问题的解决方法
2015/04/08 Python
Python中__slots__属性介绍与基本使用方法
2018/09/05 Python
解决python xlrd无法读取excel文件的问题
2018/12/25 Python
Python为何不能用可变对象作为默认参数的值
2019/07/01 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
Python中and和or如何使用
2020/05/28 Python
Python命令行参数定义及需要注意的地方
2020/11/30 Python
Interrail法国:乘火车探索欧洲,最受欢迎的欧洲铁路通票
2019/08/27 全球购物
JavaScript获取当前url根目录(路径)
2014/02/19 面试题
2014年预算员工作总结
2014/12/05 职场文书
开学随笔
2015/08/15 职场文书
2016廉洁从业学习心得体会
2016/01/19 职场文书
python爬取豆瓣电影TOP250数据
2021/05/23 Python
Python采集壁纸并实现炫轮播
2022/04/30 Python