定时器(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 相关文章推荐
找到一点可怜的关于dojo资料,谢谢作者!
Dec 06 Javascript
基于jquery的给文章加入关键字链接
Oct 26 Javascript
javascript 星级评分效果(手写)
Dec 24 Javascript
javascript之典型高阶函数应用介绍
Jan 10 Javascript
网页中可关闭的漂浮窗口实现可自行调节
Aug 20 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
Jun 19 Javascript
Angular2 多级注入器详解及实例
Oct 30 Javascript
js操作二进制数据方法
Mar 03 Javascript
微信小程序实现折叠与展开文章功能
Jun 12 Javascript
详解webpack打包第三方类库的正确姿势
Oct 20 Javascript
layui动态绑定事件的方法
Sep 20 Javascript
Javascript实现html转pdf高清版(提高分辨率)
Feb 19 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
推荐一篇入门级的Class文章
2007/03/19 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十四)
2014/06/26 PHP
PHP pear安装配置教程
2016/05/14 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
2018/06/16 PHP
关于laravel框架中的常用目录路径函数
2019/10/23 PHP
js每次Title显示不同的名言
2008/09/25 Javascript
使用javascript:将其它类型值转换成布尔类型值的解决方法详解
2013/05/07 Javascript
jQuery操作input值的各种方法总结
2013/11/21 Javascript
JavaScript数字和字符串转换示例
2014/03/26 Javascript
jQuery之Deferred对象详解
2014/09/04 Javascript
jquery用offset()方法获得元素的xy坐标
2014/09/06 Javascript
js判断是否按下了Shift键的方法
2015/01/27 Javascript
JQuery中DOM事件绑定用法详解
2015/06/13 Javascript
jQuery中的siblings用法实例分析
2015/12/24 Javascript
JavaScript数组去重的两种方法推荐
2016/04/05 Javascript
详解AngularJS 模态对话框
2016/04/07 Javascript
jQuery Ajax 加载数据时异步显示加载动画
2016/08/01 Javascript
jQuery post数据至ashx实例详解
2016/11/18 Javascript
JavaScript编写的网页小游戏,很给力
2017/08/18 Javascript
编写一个javascript元循环求值器的方法
2020/04/14 Javascript
基于小程序请求接口wx.request封装的类axios请求
2020/07/02 Javascript
如何在vue-cli中使用css-loader实现css module
2021/01/07 Vue.js
python抓取网页时字符集转换问题处理方案分享
2014/06/19 Python
Linux上使用Python统计每天的键盘输入次数
2019/04/17 Python
如何理解python对象
2020/06/21 Python
Python调用jar包方法实现过程解析
2020/08/11 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
英国度假别墅预订:Sykes Cottages
2017/06/12 全球购物
美国手工艺品市场的领导者:Annie’s
2019/04/04 全球购物
Jowissa官方网站:瑞士制造的手表,优雅简约的设计
2020/07/29 全球购物
股份合作协议书范本
2014/04/14 职场文书
新员工试用期自我鉴定
2014/04/17 职场文书
学期评语大全
2014/04/30 职场文书
文秘自荐信
2014/06/28 职场文书
会议通知范文
2015/04/15 职场文书
教你使用vscode 搭建react-native开发环境
2021/07/07 Javascript