定时器(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 相关文章推荐
ECMAScript 基础知识
Jun 29 Javascript
JavaScript XML实现两级级联下拉列表
Nov 10 Javascript
JavaScript入门教程(8) Location地址对象
Jan 31 Javascript
SOSO地图API使用(一)在地图上画圆实现思路与代码
Jan 15 Javascript
javascript函数重载解决方案分享
Feb 19 Javascript
javascript实现checkbox复选框实例代码
Jan 10 Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
May 05 Javascript
全面介绍javascript实用技巧及单竖杠
Jul 18 Javascript
AngularJs bootstrap搭载前台框架——js控制部分
Sep 01 Javascript
利用jquery实现瀑布流3种案例
Sep 18 Javascript
全面了解JavaScript的作用域链
Apr 03 Javascript
Vue实现滑动拼图验证码功能
Sep 15 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 FPDF类库应用实现代码
2009/03/20 PHP
解析PHP跨站刷票的实现代码
2013/06/18 PHP
JQuery 小练习(实例代码)
2009/08/07 Javascript
jquery.fileEveryWhere.js 一个跨浏览器的file显示插件
2011/10/24 Javascript
鼠标移动到图片名上,显示图片的简单实例
2013/07/14 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
Script标签与访问HTML页面详解
2014/01/10 Javascript
使用堆实现Top K算法(JS实现)
2015/12/25 Javascript
Angular中$compile源码分析
2016/01/28 Javascript
sea.js常用的api简易文档
2016/11/15 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
2017/01/17 Javascript
JavaScript数据结构之数组的表示方法示例
2017/04/12 Javascript
jQuery 利用ztree实现树形表格的实例代码
2017/09/27 jQuery
Node使用Sequlize连接Mysql报错:Access denied for user ‘xxx’@‘localhost’
2018/01/03 Javascript
vue axios 给生产环境和发布环境配置不同的接口地址(推荐)
2018/05/08 Javascript
jQuery实现ajax回调函数带入参数的方法示例
2018/06/26 jQuery
在vue中使用SockJS实现webSocket通信的过程
2018/08/29 Javascript
详解如何在vue项目中使用lodop打印插件
2018/09/27 Javascript
优雅的elementUI table单元格可编辑实现方法详解
2018/12/23 Javascript
微信小程序实现富文本图片宽度自适应的方法
2019/01/20 Javascript
JavaScript遍历数组的三种方法map、forEach与filter实例详解
2019/02/27 Javascript
Python易忽视知识点小结
2015/05/25 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
python制作简单五子棋游戏
2019/06/18 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
2020/01/18 Python
python实现对变位词的判断方法
2020/04/05 Python
python中的垃圾回收(GC)机制
2020/09/21 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
2020/10/16 Python
Reformation官网:美国女装品牌
2018/09/14 全球购物
《巨人的花园》教学反思
2014/02/12 职场文书
物流管理毕业生自荐信范文
2014/03/15 职场文书
社区关爱留守儿童活动方案
2014/08/22 职场文书
单位工作证明范文
2014/09/14 职场文书
在Python 中将类对象序列化为JSON
2022/04/06 Python
Python使用socket去实现TCP客户端和TCP服务端
2022/04/12 Python
mysql实现将字符串字段转为数字排序或比大小
2022/06/14 MySQL