定时器(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 获取span标签中的值的代码 支持ie与firefox
Aug 24 Javascript
Extjs学习过程中新手容易碰到的低级错误积累
Feb 11 Javascript
js获取IP和PcName(IE)在vs中可用
Aug 02 Javascript
js 距离某一时间点时间是多少实现代码
Oct 14 Javascript
jquery delay()介绍及使用指南
Sep 02 Javascript
Active控件问题小结(附解决办法)
Jun 09 Javascript
Html5 js实现手风琴效果
Apr 17 Javascript
关于vue-router路径计算问题
May 10 Javascript
vue中使用heatmapjs的示例代码(结合百度地图)
Sep 05 Javascript
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
Apr 28 jQuery
2020淘宝618理想生活列车自动领喵币js脚本的代码
Jun 02 Javascript
微信小程序自定义扫码功能界面的实现代码
Jul 02 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
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
2016/01/12 PHP
Centos6.5和Centos7 php环境搭建方法
2016/05/27 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
2017/04/05 PHP
将CKfinder整合进CKEditor3.0的新方法
2010/01/10 Javascript
Javascript 八进制转义字符(8进制)
2011/04/08 Javascript
XMLHttpRequest处理xml格式的返回数据(示例代码)
2013/11/21 Javascript
仿JQuery输写高效JSLite代码的一些技巧
2015/01/13 Javascript
基于jQuery通过jQuery.form.js插件使用ajax提交form表单
2015/08/17 Javascript
JS实现1000以内被3或5整除的数字之和
2016/02/18 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
2018/05/28 Javascript
js中数组对象去重的两种方法
2019/01/18 Javascript
node.js 使用 net 模块模拟 websocket 握手进行数据传递操作示例
2020/02/11 Javascript
Nuxt的路由动画效果案例
2020/11/06 Javascript
[17:00]DOTA2 HEROS教学视频教你分分钟做大人-帕克
2014/06/10 DOTA
[02:49:21]2019完美盛典全程录像
2019/12/08 DOTA
python中利用xml.dom模块解析xml的方法教程
2017/05/24 Python
python3使用scrapy生成csv文件代码示例
2017/12/28 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
python中如何使用分步式进程计算详解
2019/03/22 Python
python爬虫模块URL管理器模块用法解析
2020/02/03 Python
3分钟看懂Python后端必须知道的Django的信号机制
2020/07/26 Python
你可能不熟练的十个前端HTML5经典面试题
2018/07/03 HTML / CSS
高中生活自我鉴定
2014/01/18 职场文书
优秀毕业生求职信
2014/06/05 职场文书
环境卫生倡议书
2014/08/29 职场文书
销售代理协议书
2014/09/30 职场文书
个人创业事迹材料
2014/12/30 职场文书
酒店收银员岗位职责
2015/04/07 职场文书
给老婆的检讨书(搞笑版)
2015/05/06 职场文书
实习单位意见
2015/06/04 职场文书
刘胡兰观后感
2015/06/16 职场文书
美容院员工规章制度
2015/08/05 职场文书
初中军训感想
2015/08/07 职场文书
Python异常类型以及处理方法汇总
2021/06/05 Python
Flask使用SQLAlchemy实现持久化数据
2021/07/16 Python
微信告警的zabbix监控系统 监控整个NGINX集群
2022/04/18 Servers