定时器(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 相关文章推荐
JavaScript基本概念初级讲解论坛贴的学习记录
Feb 22 Javascript
js实现兼容IE6与IE7的DIV高度
May 13 Javascript
jquerydom对象的事件隐藏显示和对象数组示例
Dec 10 Javascript
javascript实现存储hmtl字符串示例
Apr 25 Javascript
Javascript中this的用法详解
Sep 22 Javascript
JS实现不规则TAB选项卡效果代码
Sep 16 Javascript
Javascript实现的StopWatch功能示例
Jun 13 Javascript
vue cli升级webapck4总结
Apr 04 Javascript
小程序云开发初探(小结)
Oct 24 Javascript
vue 实现在同一界面实现组件的动态添加和删除功能
Jun 16 Javascript
vue使用swiper实现左右滑动切换图片
Oct 16 Javascript
vue-cil之axios的二次封装与proxy反向代理使用说明
Apr 07 Vue.js
设为首页加入收藏兼容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
如何去掉文章里的 html 语法
2006/10/09 PHP
投票管理程序
2006/10/09 PHP
php中看实例学正则表达式
2006/12/25 PHP
PHP中使用CURL模拟登录并获取数据实例
2014/07/01 PHP
PHP中预定义的6种接口介绍
2015/05/12 PHP
PHP实现支持CURL字符串证书传输的方法
2019/03/23 PHP
JavaScript Event学习第三章 早期的事件处理程序
2010/02/07 Javascript
javascript 窗口加载蒙板 内嵌网页内容
2010/11/19 Javascript
加载远程图片时,经常因为缓存而得不到更新的解决方法(分享)
2013/06/26 Javascript
关于js中for in的缺陷浅析
2013/12/02 Javascript
JS判断文本框内容改变事件的简单实例
2014/03/07 Javascript
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
jQuery统计上传文件大小的方法
2015/01/24 Javascript
Angularjs 自定义服务的三种方式(推荐)
2016/08/02 Javascript
微信小程序  action-sheet详解及实例代码
2016/11/09 Javascript
Javascript中的 “&” 和 “|” 详解
2017/02/02 Javascript
js a标签点击事件
2017/03/30 Javascript
基于zTree树形菜单的使用实例
2017/12/25 Javascript
解决vue页面刷新或者后退参数丢失的问题
2018/03/13 Javascript
Vuex实现购物车小功能
2020/08/17 Javascript
解决vue-cli输入命令vue ui没效果的问题
2020/11/17 Javascript
[01:10:58]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
Python文件与文件夹常见基本操作总结
2016/09/19 Python
Python学习小技巧之列表项的推导式与过滤操作
2017/05/20 Python
Python实现扩展内置类型的方法分析
2017/10/16 Python
python实时监控cpu小工具
2018/06/21 Python
对pycharm 修改程序运行所需内存详解
2018/12/03 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
python识别验证码图片实例详解
2020/02/17 Python
python代码实现将列表中重复元素之间的内容全部滤除
2020/05/22 Python
Python爬虫实现HTTP网络请求多种实现方式
2020/06/19 Python
个人自我鉴定范文
2013/10/04 职场文书
中学校庆方案
2014/03/17 职场文书
入党积极分子半年考察意见
2015/06/02 职场文书
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js
Python必备技巧之字符数据操作详解
2022/03/23 Python