定时器(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 获得绝对,相对位置的坐标方法
Feb 09 Javascript
js 关于=+与+=日期函数使用说明(赋值运算符)
Nov 15 Javascript
js模仿windows桌面图标排列算法具体实现(附图)
Jun 16 Javascript
jquery 实现复选框的全选操作实例代码
Jan 24 Javascript
bootstrap+jQuery实现的动态进度条功能示例
May 25 jQuery
JavaScript中in和hasOwnProperty区别详解
Aug 04 Javascript
js 毫秒转天时分秒的实例
Nov 17 Javascript
3种vue路由传参的基本模式
Feb 22 Javascript
JavaScript判断浏览器运行环境的详细方法
Jun 30 Javascript
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
Jul 13 Javascript
用JS实现一个简单的打砖块游戏
Dec 11 Javascript
JS前后端实现身份证号验证代码解析
Jul 23 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 图像处理类1
2009/06/15 PHP
PHP字符串的编码问题的详细介绍
2013/04/27 PHP
解析PHP对现有搜索引擎的调用
2013/06/25 PHP
PHP中判断变量为空的几种方法分享
2013/08/26 PHP
iOS+PHP注册登录系统 PHP部分(上)
2016/12/26 PHP
PHP正则表达式匹配替换与分割功能实例浅析
2017/02/04 PHP
记录Yii2框架开发微信公众号遇到的问题及解决方法
2018/07/20 PHP
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
2006/09/22 Javascript
异步javascript的原理和实现技巧介绍
2012/11/08 Javascript
查看大图功能代码jquery版
2013/11/05 Javascript
jquery slibings选取同级其他元素的实现代码
2013/11/15 Javascript
优化javascript的执行效率一些方法总结
2013/12/25 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
2014/03/22 Javascript
javascript for-in有序遍历json数据并探讨各个浏览器差异
2015/11/30 Javascript
Django1.7+JQuery+Ajax验证用户注册集成小例子
2017/04/08 jQuery
JavaScript for循环 if判断语句(学习笔记)
2017/10/11 Javascript
详解微信小程序审核不通过的解决方法
2018/01/17 Javascript
JavaScript基于对象方法实现数组去重及排序操作示例
2018/07/10 Javascript
js+css实现红包雨效果
2018/07/12 Javascript
详解微信小程序-canvas绘制文字实现自动换行
2019/04/26 Javascript
CKEditor 4.4.1 添加代码高亮显示插件功能教程【使用官方推荐Code Snippet插件】
2019/06/14 Javascript
关于layui的下拉搜索框异步加载数据的解决方法
2019/09/28 Javascript
Python双精度浮点数运算并分行显示操作示例
2017/07/21 Python
tensorflow TFRecords文件的生成和读取的方法
2018/02/06 Python
Python-while 计算100以内奇数和的方法
2019/06/11 Python
关于python中密码加盐的学习体会小结
2019/07/15 Python
一款纯css3实现的非常实用的鼠标悬停特效演示
2014/11/05 HTML / CSS
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
捷克领先的户外服装及配件市场零售商:ALPINE PRO
2018/01/09 全球购物
JNI的定义
2012/11/25 面试题
学生干部培训方案
2014/06/12 职场文书
党员教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
借条格式范本
2015/05/25 职场文书
结婚司仪主持词
2015/06/29 职场文书
2016春季校长开学典礼致辞
2015/11/26 职场文书
Java实现聊天机器人完善版
2021/07/04 Java/Android