定时器(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 相关文章推荐
js获取dom的高度和宽度(可见区域及部分等等)
Jun 13 Javascript
jQuery on方法传递参数示例
Dec 09 Javascript
使用AngularJS来实现HTML页面嵌套的方法
Jun 17 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
Aug 27 Javascript
javaScript给元素添加多个class的简单实现
Jul 20 Javascript
微信小程序 location API接口详解及实例代码
Oct 12 Javascript
Angular2生命周期钩子函数的详细介绍
Jul 10 Javascript
tangram.js库实现js类的方式实例分析
Jan 06 Javascript
vue-cli3.0 特性解读
Apr 22 Javascript
解决Vue打包后访问图片/图标不显示的问题
Jul 25 Javascript
layui-table表复选框勾选的所有行数据获取的例子
Sep 13 Javascript
分享15个Webpack实用的插件!!!
Mar 31 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
C#使用PHP服务端的Web Service通信实例
2014/04/08 PHP
php版微信公众号自定义分享内容实现方法
2016/09/22 PHP
Yii2设置默认控制器的两种方法
2017/05/19 PHP
提高javascript效率 一次判断,而不要次次判断
2012/03/30 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
2012/12/26 Javascript
JS中把字符转成ASCII值的函数示例代码
2013/11/21 Javascript
Node.js node-schedule定时任务隔多少分钟执行一次的方法
2015/02/10 Javascript
jQuery插件slider实现拖动滑块选取价格范围
2015/04/30 Javascript
jQuery实现首页图片淡入淡出效果的方法
2015/06/10 Javascript
JavaScript前端开发之实现二进制读写操作
2015/11/04 Javascript
D3.js实现雷达图的方法详解
2016/09/22 Javascript
IOS中safari下的select下拉菜单文字过长不换行的解决方法
2016/09/26 Javascript
canvas绘制爱心的几种方法总结(推荐)
2017/10/31 Javascript
vue注册组件的几种方式总结
2018/03/08 Javascript
vue2.0+koa2+mongodb实现注册登录
2018/04/10 Javascript
vue watch深度监听对象实现数据联动效果
2018/08/16 Javascript
你或许不知道的一些npm实用技巧
2019/07/04 Javascript
[01:32]2016国际邀请赛中国区预选赛IG战队首日赛后采访
2016/06/27 DOTA
python编写暴力破解zip文档程序的实例讲解
2018/04/24 Python
简单了解django索引的相关知识
2019/07/17 Python
pytorch sampler对数据进行采样的实现
2019/12/31 Python
python如何编写win程序
2020/06/08 Python
欧舒丹英国官网:购买欧舒丹护手霜等明星产品
2017/01/17 全球购物
欧洲领先的电子和电信零售商和服务提供商:Currys PC World Business
2017/12/05 全球购物
JD Sports荷兰:英国领先的运动时尚零售商
2020/03/13 全球购物
电子商务专业自我鉴定
2013/12/18 职场文书
人事部专员岗位职责
2014/03/04 职场文书
2014年党员创先争优承诺书
2014/05/29 职场文书
小学兴趣小组活动总结
2014/07/07 职场文书
超市店庆活动方案
2014/08/31 职场文书
小学生五年级大队长竞选发言稿
2014/09/12 职场文书
纪念九一八爱国演讲稿600字
2014/09/14 职场文书
党员批评与自我批评
2014/10/15 职场文书
如何用JS实现简单的数据监听
2021/05/06 Javascript
JavaScript利用html5新方法操作元素类名详解
2021/11/27 Javascript
“鬼灭之刃”热度不减,其成功背后的原因是什么?
2022/03/22 日漫