定时器(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使用cookie
Feb 02 Javascript
jQuery checkbox全选/取消全选实现代码
Nov 14 Javascript
兼容FF和IE的动态table示例自写
Oct 21 Javascript
jquery中的ajax方法怎样通过JSONP进行远程调用
May 04 Javascript
js简单实现标签云效果实例
Aug 06 Javascript
你不知道的高性能JAVASCRIPT
Jan 18 Javascript
在node.js中怎么屏蔽掉favicon.ico的请求
Mar 01 Javascript
Vue如何引入远程JS文件
Apr 20 Javascript
Webpack 4如何动态切割JS注入文件名详解
Jul 09 Javascript
vue 组件开发原理与实现方法详解
Nov 29 Javascript
JS中forEach()、map()、every()、some()和filter()的用法
May 11 Javascript
vue el-table实现递归嵌套的示例代码
Aug 14 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
古巴咖啡 Cubita琥爵咖啡 独特的加勒比海风味咖啡
2021/03/06 新手入门
PHP安全配置
2006/10/09 PHP
建立文件交换功能的脚本(一)
2006/10/09 PHP
PHP获得用户使用的代理服务器ip即真实ip
2006/12/31 PHP
PHP加密函数 Javascript/Js 解密函数
2013/09/23 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
thinkPHP3.2.3结合Laypage实现的分页功能示例
2018/05/28 PHP
利用javascript移动div层-javascript 拖动层
2009/03/22 Javascript
javascript 函数调用的对象和方法
2010/07/01 Javascript
纯JAVASCRIPT图表动画插件Highcharts Examples
2011/04/16 Javascript
jQuery $.extend()用法总结
2014/06/15 Javascript
Javascript基于对象三大特性(封装性、继承性、多态性)
2016/01/04 Javascript
JavaScript实现页面跳转的方式汇总
2016/05/16 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
2017/03/29 Javascript
基于vue的换肤功能的示例代码
2017/10/10 Javascript
vue父组件异步获取数据传给子组件的方法
2018/07/26 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
2020/05/18 Javascript
javascript canvas实现简易时钟例子
2020/09/05 Javascript
微信小程序实现简单的select下拉框
2020/11/23 Javascript
基于Python Shell获取hostname和fqdn释疑
2016/01/25 Python
python使用电子邮件模块smtplib的方法
2016/08/28 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
2017/03/12 Python
django中send_mail功能实现详解
2018/02/06 Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
2018/12/14 Python
18个Python脚本可加速你的编码速度(提示和技巧)
2019/10/17 Python
pycharm运行scrapy过程图解
2019/11/22 Python
python如何把字符串类型list转换成list
2020/02/18 Python
在Django中自定义filter并在template中的使用详解
2020/05/19 Python
美国廉价机票预订网站:Cheapfaremart
2018/04/28 全球购物
意大利在线药房:Saninforma
2021/02/11 全球购物
汉语专业毕业生自荐信
2014/07/06 职场文书
财务人员岗位职责
2015/02/03 职场文书
幼儿园教师节活动总结
2015/03/23 职场文书
哈姆雷特读书笔记
2015/06/29 职场文书
演讲比赛通讯稿
2015/07/18 职场文书
python scipy 稀疏矩阵的使用说明
2021/05/26 Python