定时器(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 相关文章推荐
JQuery index()方法使用代码
Jun 02 Javascript
javascript中获取下个月一号,是星期几
Jun 01 Javascript
自己写的兼容ie和ff的在线文本编辑器类似ewebeditor
Dec 12 Javascript
JavaScript 模块的循环加载实现方法
Dec 13 Javascript
JavaScript文本框脚本编写的注意事项
Jan 25 Javascript
javascript实现简单的可随机变色网页计算器示例
Dec 30 Javascript
JS实现Cookie读、写、删除操作工具类示例
Aug 28 Javascript
微信小程序实现购物页面左右联动
Feb 15 Javascript
基于three.js实现的3D粒子动效实例代码
Apr 09 Javascript
详解基于mpvue微信小程序下载远程图片到本地解决思路
May 16 Javascript
javascript简单实现深浅拷贝过程详解
Oct 08 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
Aug 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
php权重计算方法代码分享
2014/01/09 PHP
PHP fastcgi模式上传大文件(大约有300多K)报错
2014/09/28 PHP
PHP用反撇号执行外部命令
2015/04/14 PHP
培养自己的php编码规范
2015/09/28 PHP
PHP实用小技巧之调用录像的方法
2019/12/05 PHP
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
2020/03/18 PHP
js脚本学习 比较实用的基础
2006/09/07 Javascript
网上抓的一个特效
2007/05/11 Javascript
jQuery插件开发基础简单介绍
2013/01/07 Javascript
js左侧三级菜单导航实例代码
2013/09/13 Javascript
javascript批量修改文件编码格式的方法
2015/01/27 Javascript
JS+CSS实现精美的二级导航效果代码
2015/09/17 Javascript
win7下安装配置node.js+express开发环境
2015/12/06 Javascript
jquery对Json的各种遍历方法总结(必看篇)
2016/09/29 Javascript
对javascript继承的理解
2016/10/11 Javascript
jQuery简单实现遍历单选框的方法
2017/03/06 Javascript
微信小程序App生命周期详解
2018/01/31 Javascript
使用原生JS实现滚轮翻页效果的示例代码
2020/05/31 Javascript
VUE页面中通过双击实现复制表格中内容的示例代码
2020/06/11 Javascript
详解为什么Vue中的v-if和v-for不建议一起用
2021/01/13 Vue.js
[09:22]2014DOTA2西雅图国际邀请赛 主赛事第二日TOPPLAY
2014/07/21 DOTA
[14:19]2018年度COSER大赛-完美盛典
2018/12/16 DOTA
[01:10]DOTA2英雄背景故事第四期之混沌法则混沌骑士
2020/07/16 DOTA
[01:01:01]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第一场 10.29
2020/10/29 DOTA
Flask实现跨域请求的处理方法
2018/09/27 Python
python 实现兔子生兔子示例
2019/11/21 Python
Pytorch实现将模型的所有参数的梯度清0
2020/06/24 Python
日本索尼音乐商店:Sony Music Shop
2018/07/17 全球购物
女装和独特珠宝:Sundance Catalog
2018/09/19 全球购物
创造美妙香氛体验:Aera扩散器和香水
2018/11/25 全球购物
荷兰睡眠专家:Beter Bed
2020/11/23 全球购物
js实现弹框效果
2021/03/24 Javascript
静心口服夜广告词
2014/03/20 职场文书
2015国庆节宣传语
2015/07/14 职场文书
小学体育跳绳课教学反思
2016/02/16 职场文书
Python中快速掌握Data Frame的常用操作
2021/03/31 Python