定时器(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数组处理多个字符串的连接问题
Aug 20 Javascript
js 调用父窗口的具体实现代码
Jul 15 Javascript
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
Nov 14 Javascript
容易造成JavaScript内存泄露几个方面
Sep 04 Javascript
简介可以自动完成UI的AngularJS工具angular-smarty
Jun 23 Javascript
网页收藏夹显示ICO图标(代码少)
Aug 04 Javascript
js判断手机号运营商的方法
Oct 23 Javascript
js数组方法reduce经典用法代码分享
Jan 07 Javascript
JavaScript反射与依赖注入实例详解
May 29 Javascript
bootstrap模态框弹出和隐藏,动态改变中间内容的实例
Aug 10 Javascript
ES6 Object方法扩展的应用实例分析
Jun 25 Javascript
微信公众号平台接口开发 获取access_token过程解析
Aug 14 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
在WIN98下以apache模块方式安装php
2006/10/09 PHP
一个简洁的多级别论坛
2006/10/09 PHP
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
2010/03/15 PHP
php函数实现判断是否移动端访问
2015/03/03 PHP
PHP批量生成图片缩略图的方法
2015/06/18 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
jQuery中fadeIn、fadeOut、fadeTo的使用方法(图片显示与隐藏)
2013/05/08 Javascript
js/jquery判断浏览器类型的方法小结
2015/05/12 Javascript
详细解读JavaScript的跨浏览器事件处理
2015/08/12 Javascript
JS中frameset框架弹出层实例代码
2016/04/01 Javascript
js实现浏览器倒计时跳转页面效果
2016/08/12 Javascript
微信小程序 石头剪刀布实例代码
2017/01/04 Javascript
基于vue实现swipe轮播组件实例代码
2017/05/24 Javascript
基于 webpack2 实现的多入口项目脚手架详解
2017/06/26 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
基于node.js实现爬虫的讲解
2019/02/18 Javascript
javascript中的this作用域详解
2019/07/15 Javascript
element form 校验数组每一项实例代码
2019/10/10 Javascript
vue中destroyed方法的使用说明
2020/07/21 Javascript
Nuxt.js nuxt-link与router-link的区别说明
2020/11/06 Javascript
python中mechanize库的简单使用示例
2014/01/10 Python
全面理解Python中self的用法
2016/06/04 Python
python 上下文管理器使用方法小结
2017/10/10 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
2018/12/19 Python
详解Python二维数组与三维数组切片的方法
2019/07/18 Python
python 画出使用分类器得到的决策边界
2019/08/21 Python
详解python中*号的用法
2019/10/21 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
2020/01/25 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
2021/02/26 Python
利用python实现后端写网页(flask框架)
2021/02/28 Python
联想新西兰官方网站:Lenovo New Zealand
2018/10/30 全球购物
运动会广播稿200字
2014/01/15 职场文书
置业顾问岗位职责
2015/02/09 职场文书
2016年度基层党建工作公开承诺书
2016/03/25 职场文书
Python代码风格与编程习惯重要吗?
2021/06/03 Python
如何开启Apache,Nginx和IIS服务器的GZIP压缩功能
2022/04/29 Servers