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 相关文章推荐
翻译整理的jQuery使用查询手册
Mar 07 Javascript
js查找父节点的简单方法
Jun 28 Javascript
有道JavaScript监听浏览器的问题
Jun 23 Javascript
js禁止页面使用右键(简单示例代码)
Nov 13 Javascript
使用JS实现jQuery的addClass, removeClass, hasClass函数功能
Oct 31 Javascript
jQuery数组处理函数整理
Aug 03 Javascript
vue2.0 axios前后端数据处理实例代码
Jun 30 Javascript
import与export在node.js中的使用详解
Sep 28 Javascript
微信小程序利用canvas 绘制幸运大转盘功能
Jul 06 Javascript
webpack4 SCSS提取和懒加载的示例
Sep 03 Javascript
vue-better-scroll 的使用实例代码详解
Dec 03 Javascript
vue数据响应式原理知识点总结
Feb 16 Javascript
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
二十行语句实现从Excel到mysql的转化
2006/10/09 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
2014/02/13 PHP
YII Framework教程之异常处理详解
2016/03/14 PHP
php mysql操作mysql_connect连接数据库实例详解
2016/12/26 PHP
基于PHP实现的多元线性回归模拟曲线算法
2018/01/30 PHP
用js实现的自定义的对话框的实现代码
2010/03/21 Javascript
js中单引号与双引号冲突问题解决方法
2013/10/04 Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
2014/01/13 Javascript
jQuery实现checkbox全选的方法
2015/06/10 Javascript
PhantomJS快速入门教程(服务器端的 JavaScript API 的 WebKit)
2015/08/06 Javascript
微信小程序之多文件下载的简单封装示例
2018/01/29 Javascript
vue页面离开后执行函数的实例
2018/03/13 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
2019/02/26 Javascript
JS实现字体背景跑马灯
2020/01/06 Javascript
python中pass语句用法实例分析
2015/04/30 Python
基于Python中numpy数组的合并实例讲解
2018/04/04 Python
PyTorch使用cpu加载模型运算方式
2020/01/13 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
2020/02/18 Python
浅谈在JupyterNotebook下导入自己的模块的问题
2020/04/16 Python
Python字符串格式化f-string多种功能实现
2020/05/07 Python
CSS3 毛玻璃效果
2019/08/14 HTML / CSS
CSS3 实现倒计时效果
2020/11/25 HTML / CSS
英国时尚家具、家居饰品及礼品商店:Graham & Green
2016/09/15 全球购物
Schutz鞋官方网站:Schutz Shoes
2017/12/13 全球购物
中国首家奢侈品O2O网购平台:第五大道奢侈品网
2017/12/14 全球购物
研究生自荐信
2013/10/09 职场文书
工程班组长岗位职责
2013/12/30 职场文书
电脑租赁公司创业计划书
2014/01/08 职场文书
感恩节红领巾广播稿
2014/02/11 职场文书
丧事主持词大全
2014/04/02 职场文书
大学生撤销处分思想汇报
2014/09/12 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书
开网店计划分析
2019/07/30 职场文书
56句经典英文座右铭
2019/08/09 职场文书
基于Java的MathML转图片的方法(示例代码)
2021/06/23 Java/Android
CSS三大特性继承性、层叠性和优先级详解
2022/01/18 HTML / CSS