定时器(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 Clone Bug解决代码
Dec 22 Javascript
JS的document.all函数使用示例
Dec 30 Javascript
利用JS解决ie6不支持max-width,max-height问题的方法
Jan 02 Javascript
用C/C++来实现 Node.js 的模块(一)
Sep 24 Javascript
vue.js中$watch的用法示例
Oct 04 Javascript
原生js实现下拉框功能(支持键盘事件)
Jan 13 Javascript
ionic实现底部分享功能
May 11 Javascript
js图片上传的封装代码
Aug 01 Javascript
解析Vue 2.5的Diff算法
Nov 28 Javascript
Vue组件和Route的生命周期实例详解
Feb 10 Javascript
js实现简单五子棋游戏
May 28 Javascript
使用Taro实现小程序商城的购物车功能模块的实例代码
Jun 05 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中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
WordPress中制作导航菜单的PHP核心方法讲解
2015/12/11 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
PHP laravel中的多对多关系实例详解
2017/06/07 PHP
Code:loadScript( )加载js的功能函数
2007/02/02 Javascript
JQuery SELECT单选模拟jQuery.select.js
2009/11/12 Javascript
为radio类型的INPUT添加客户端脚本(附加实现JS来禁用onClick事件思路代码)
2010/11/11 Javascript
js中点击空白区域时文本框与隐藏层的显示与影藏问题
2013/08/26 Javascript
Jquery Uploadify多文件上传带进度条且传递自己的参数
2013/08/28 Javascript
按钮接受回车事件的三种实现方法
2014/06/06 Javascript
当前流行的JavaScript代码风格指南
2014/09/10 Javascript
jQuery实现3D文字特效的方法
2015/03/10 Javascript
使用AmplifyJS组件配合JavaScript进行编程的指南
2015/07/28 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
基于Jquery和html5的7款个性化地图插件
2015/11/17 Javascript
vue2.0开发实践总结之入门篇
2016/12/06 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
javascript 产生随机数的几种方法总结
2017/09/26 Javascript
解决iview打包时UglifyJs报错的问题
2018/03/07 Javascript
react结合bootstrap实现评论功能
2020/05/30 Javascript
javaScript实现一个队列的方法
2020/07/14 Javascript
Python中利用sqrt()方法进行平方根计算的教程
2015/05/15 Python
Python使用爬虫爬取静态网页图片的方法详解
2018/06/05 Python
39美元购买一副眼镜或太阳镜:39DollarGlasses.com
2018/06/17 全球购物
销售辞职报告范文
2014/01/12 职场文书
军校大学生个人的自我评价
2014/02/17 职场文书
大学四年个人的自我评价
2014/02/26 职场文书
潘婷洗发水广告词
2014/03/14 职场文书
局机关干部群众路线个人对照检查材料思想汇报
2014/10/05 职场文书
研究生就业推荐表导师评语
2014/12/31 职场文书
本科毕业论文答辩稿
2015/06/23 职场文书
MySQL 亿级数据导入导出及迁移笔记
2021/06/18 MySQL
一文搞清楚MySQL count(*)、count(1)、count(col)区别
2022/03/03 MySQL
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android
Win11 Build 25179预览版发布(附更新内容+ISO官方镜像下载)
2022/08/14 数码科技