定时器(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 无废话系列教程(二) jquery实战篇上
Jun 23 Javascript
JavaScript 工具库 Cloudgamer JavaScript Library v0.1 发布
Oct 29 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
Oct 11 Javascript
谷歌Chrome浏览器扩展程序开发小记
Jan 06 Javascript
JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
May 31 Javascript
js改变style样式和css样式的简单实例
Jun 28 Javascript
javascript实现简易计算器
Feb 01 Javascript
php输出全部gb2312编码内的汉字方法
Mar 04 Javascript
Bootstrap fileinput文件上传组件使用详解
Jun 06 Javascript
如何理解Vue的.sync修饰符的使用
Aug 17 Javascript
JavaScript之实现一个简单的Vue示例
Jan 17 Javascript
使用weixin-java-miniapp配置进行单个小程序的配置详解
Mar 29 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
ThinkPHP中实例Model方法的区别说明
2010/08/21 PHP
PHP附件下载中文名称乱码的解决方法
2015/12/17 PHP
PHP 将数组打乱 shuffle函数的用法及简单实例
2016/06/17 PHP
基于Jquery的实现回车键Enter切换焦点
2010/09/14 Javascript
jQuery弹出(alert)select选择的值
2013/04/21 Javascript
js判断屏幕分辨率的代码
2013/07/16 Javascript
jquery判断元素是否隐藏的多种方法
2014/05/06 Javascript
JavaScript日期类型的一些用法介绍
2015/03/02 Javascript
JavaScript模块化开发之SeaJS
2015/12/13 Javascript
基于js中的原型、继承的一些想法
2016/08/10 Javascript
JS对象是否拥有某属性如何判断
2017/02/03 Javascript
BootStrap TreeView使用实例详解
2017/11/01 Javascript
解读ES6中class关键字
2017/11/20 Javascript
vue结合Echarts实现点击高亮效果的示例
2018/03/17 Javascript
VeeValidate 的使用场景以及配置详解
2019/01/11 Javascript
微信小程序 如何获取网络状态
2019/07/26 Javascript
微信小程序页面滚动到指定位置代码实例
2019/09/07 Javascript
JS实现随机抽取三人
2019/11/06 Javascript
深入解读VUE中的异步渲染的实现
2020/06/19 Javascript
python基础教程之基本数据类型和变量声明介绍
2014/08/29 Python
python中list循环语句用法实例
2014/11/10 Python
Python实现爬取逐浪小说的方法
2015/07/07 Python
Python+Wordpress制作小说站
2017/04/14 Python
python计算两个地址之间的距离方法
2018/06/09 Python
python读取图片并修改格式与大小的方法
2018/07/24 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
css3 给页面加个半圆形导航条主要利用旋转和倾斜样式
2014/02/10 HTML / CSS
联想新加坡官方网站:Lenovo Singapore
2017/10/24 全球购物
运动会开幕式邀请函
2014/01/22 职场文书
开会迟到检讨书
2014/02/03 职场文书
企业办公室主任岗位职责
2014/02/19 职场文书
小学捐书活动总结
2014/07/05 职场文书
2015年学雷锋活动总结
2015/02/06 职场文书
Golang 并发下的问题定位及解决方案
2022/03/16 Golang
详解PyTorch模型保存与加载
2022/04/28 Python