定时器(setTimeout/setInterval)调用带参函数失效解决方法


Posted in Javascript onMarch 26, 2013

首先来看下定时器的用法
1. setInterval(code,millisec[,"lang"])  setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。

参数 描述
code 必需,要调用的函数或要执行的代码串。
millisec 必需,周期性执行或调用 code 之间的时间间隔,以毫秒计。

2.setTimeout(code,millisec) setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。
参数 描述
code 必需,要调用的函数后要执行的 JavaScript 代码串。
millisec 必需,在执行代码前需等待的毫秒数。

提示:setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。
也许你曾碰到过这样的问题,不管是setInterval()还是setTimeout(),当code参数里放一个带参函数时,定时器都会失效,看下面这个例子:
function test(str){ 
alert(str); 
} 
var a = "abcde" 
setTimeout(test(a),3000);

执行上面代码,页面不会延迟3秒调用test(a),而是会立即执行test(a),IE、FF、Chrome下都会出现这个问题,如果你经常用到定时器,这个问题应该应该经常会碰到,那么要怎样去解决呢?
笔者在这里归纳两种常用的解决方法,当然应该也还有其他的解决方法,在这里就不一一赘述。
方法1:用匿名函数包裹
function test(str){ 
alert(str); 
} 
var a = "abcde" 
setTimeout(function(){ 
test(a); 
},3000);

方法2:用引号包裹需调用的函数
function test(str){ 
alert(str); 
} 
var a = "abcde" 
setTimeout("test('+a+')",3000);

上面只以setTimeout()为例,setInterval()同样适用,这里就不在过多叙述了。
Javascript 相关文章推荐
转换json格式的日期为Javascript对象的函数
Jul 13 Javascript
javascript学习笔记(六) Date 日期类型
Jun 19 Javascript
js实现网页倒计时、网站已运行时间功能的代码3例
Apr 14 Javascript
使用javascript插入样式
Mar 14 Javascript
Linux CentOS系统下安装node.js与express的方法
Apr 01 Javascript
微信小程序富文本渲染引擎的详解
Sep 30 Javascript
Vue入门之数量加减运算操作示例
Dec 11 Javascript
vue基于viewer实现的图片查看器功能
Apr 12 Javascript
简述pm2常用命令集合及配置文件说明
May 30 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
Aug 17 Javascript
原生javascript中this几种常见用法总结
Feb 24 Javascript
如何使用CocosCreator对象池
Apr 14 Javascript
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
Mar 26 #Javascript
jquery 无限级联菜单案例分享
Mar 26 #Javascript
JSON辅助格式化处理方法
Mar 26 #Javascript
html+css+js实现xp window界面及有关功能
Mar 26 #Javascript
jquery图片放大镜功能的实例代码
Mar 26 #Javascript
EditPlus注册码生成器(js代码实现)
Mar 25 #Javascript
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
Mar 25 #Javascript
You might like
php不用正则验证真假身份证
2013/11/06 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
PHP查看SSL证书信息的方法
2016/09/22 PHP
PHP巧妙利用位运算实现网站权限管理的方法
2017/03/12 PHP
线路分流自动跳转代码;希望对大家有用!
2006/12/02 Javascript
搭建pomelo 开发环境
2014/06/24 Javascript
javascript基本包装类型介绍
2015/04/10 Javascript
jQuery插件MixItUp实现动画过滤和排序
2015/04/12 Javascript
JavaScript阻止回车提交表单的方法
2015/12/30 Javascript
js中遍历Map对象的简单实例
2016/08/08 Javascript
微信小程序 less文件编译成wxss文件实现办法
2016/12/05 Javascript
js实现可输入可选择的select下拉框
2016/12/21 Javascript
微信小程序手势操作之单触摸点与多触摸点
2017/03/10 Javascript
详解nodejs实现本地上传图片并预览功能(express4.0+)
2017/06/28 NodeJs
vue.js将时间戳转化为日期格式的实现代码
2018/06/05 Javascript
详解小程序循环require之坑
2019/03/08 Javascript
vue中 数字相加为字串转化为数值的例子
2019/11/07 Javascript
vue data引入本地图片的两种方式小结
2019/11/13 Javascript
JavaScript数组类型Array相关的属性与方法详解
2020/09/08 Javascript
[54:28]EG vs OG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
python实现bitmap数据结构详解
2014/02/17 Python
Python创建字典的八种方式
2019/02/27 Python
Python 多个图同时在不同窗口显示的实现方法
2019/07/07 Python
python实现H2O中的随机森林算法介绍及其项目实战
2019/08/29 Python
python GUI库图形界面开发之PyQt5复选框控件QCheckBox详细使用方法与实例
2020/02/28 Python
Python如何将函数值赋给变量
2020/04/28 Python
python中类与对象之间的关系详解
2020/12/16 Python
台湾团购、宅配和优惠券:17Life
2017/08/14 全球购物
MONNIER Frères英国官网:源自巴黎女士奢侈品配饰电商平台
2018/12/06 全球购物
如何删除一个表里面的重复行
2013/07/13 面试题
如何撰写岗位职责
2014/02/01 职场文书
教师师德承诺书
2014/03/26 职场文书
医院党员公开承诺书
2014/08/30 职场文书
井冈山红色之旅感想
2014/10/07 职场文书
张思德观后感
2015/06/09 职场文书
小学思品教学反思
2016/02/20 职场文书