定时器(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 相关文章推荐
wap图片滚动特效无css3元素纯js脚本编写
Aug 22 Javascript
node.js中的console.time方法使用说明
Dec 09 Javascript
js计算任意值之间随机数的方法
Jan 16 Javascript
jQuery实现简单二级下拉菜单
Apr 12 Javascript
js编写贪吃蛇的小游戏
Aug 24 Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
Nov 07 Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
Dec 07 Javascript
angularjs1.5 组件内用函数向外传值的实例
Sep 30 Javascript
vue登录以及权限验证相关的实现
Oct 25 Javascript
使用JavaScript计算前一天和后一天的思路详解
Dec 20 Javascript
js实现弹窗效果
Aug 09 Javascript
5种 JavaScript 方式实现数组扁平化
Oct 05 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
MYSQL 小技巧 -- LAST_INSERT_ID
2009/11/24 PHP
php中文字符串截取方法实例总结
2014/09/30 PHP
PHP随机生成信用卡卡号的方法
2015/03/23 PHP
php导出csv文件,可导出前导0实例代码
2016/11/16 PHP
php变量与JS变量实现不通过跳转直接交互的方法
2017/08/25 PHP
javascript判断单选框或复选框是否选中方法集锦
2007/04/04 Javascript
编辑浪子版表单验证类
2007/05/12 Javascript
jquery中eq和get的区别与使用方法
2011/04/14 Javascript
jQuery图片切换插件jquery.cycle.js使用示例
2014/06/16 Javascript
javascript实现五星评价代码(源码下载)
2015/08/11 Javascript
动态的9*9乘法表效果的实现代码
2016/05/16 Javascript
JavaScript算法系列之快速排序(Quicksort)算法实例详解
2016/09/04 Javascript
jquery实现tab键进行选择后enter键触发click行为
2017/03/29 jQuery
Ionic3 UI组件之autocomplete详解
2017/06/08 Javascript
微信小程序 新建登录页并实现tabBar隐藏
2017/06/13 Javascript
实现div滚动条默认最底部以及默认最右边的示例代码
2017/11/15 Javascript
用vuex写了一个购物车H5页面的示例代码
2018/12/04 Javascript
在vue中使用回调函数,this调用无效的解决
2020/08/11 Javascript
[13:56]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第一场
2018/04/06 DOTA
python中的字符串内部换行方法
2018/07/19 Python
Python设计模式之模板方法模式实例详解
2019/01/17 Python
Python Sympy计算梯度、散度和旋度的实例
2019/12/06 Python
vscode写python时的代码错误提醒和自动格式化的方法
2020/05/07 Python
如何利用python发送邮件
2020/09/26 Python
Python 调用 ES、Solr、Phoenix的示例代码
2020/11/23 Python
Python字节单位转换(将字节转换为K M G T)
2021/03/02 Python
广告学专业推荐信范文
2013/11/23 职场文书
马云的职业生涯规划之路
2014/01/01 职场文书
加工操作管理制度
2014/01/19 职场文书
公司董事长岗位职责
2014/06/08 职场文书
党员教师群众路线个人整改措施
2014/10/28 职场文书
离婚协议书范本(通用篇)
2014/11/30 职场文书
幼儿园开学家长寄语(2016秋季)
2015/12/03 职场文书
Python关于OS文件目录处理的实例分享
2021/05/23 Python
手写实现JS中的new
2021/11/07 Javascript
JavaScript实现九宫格拖拽效果
2022/06/28 Javascript