定时器(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 Ajax方法传值到action的方法
May 11 Javascript
JavaScript中调用函数的4种方式代码实例
Jul 08 Javascript
js鼠标移动时禁止选中文字
Feb 19 Javascript
JavaScript表单验证完美代码
Mar 02 Javascript
详解Vue2+Echarts实现多种图表数据可视化Dashboard(附源码)
Mar 21 Javascript
vuex 使用文档小结篇
Jan 11 Javascript
用vue写一个仿简书的轮播图的示例代码
Mar 13 Javascript
vue.js前后端数据交互之提交数据操作详解
Apr 24 Javascript
Vue中el-form标签中的自定义el-select下拉框标签功能
Apr 20 Javascript
JS原形与原型链深入详解
May 09 Javascript
Javascript中的奇葩知识,你知道吗?
Jan 25 Javascript
vue elementUI表格控制对应列
Apr 13 Vue.js
设为首页加入收藏兼容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
全新的PDO数据库操作类php版(仅适用Mysql)
2012/07/22 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
PHP实现基于PDO扩展连接PostgreSQL对象关系数据库示例
2018/03/31 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
JavaScript CSS菜单功能 改进版
2008/12/20 Javascript
js实现跨域的方法实例详解
2015/06/24 Javascript
浅谈bootstrap源码分析之scrollspy(滚动侦听)
2016/06/06 Javascript
浅谈js中子页面父页面方法 变量相互调用
2016/08/04 Javascript
ajax的分页查询示例(不刷新页面)
2017/01/11 Javascript
jQuery实现鼠标悬停3d菜单展开动画效果
2017/01/19 Javascript
jQuery插件FusionCharts实现的2D饼状图效果【附demo源码下载】
2017/03/03 Javascript
微信小程序对接七牛云存储的方法
2017/07/30 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
2017/08/17 Javascript
在Vue中使用Compass的方法
2018/03/02 Javascript
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
vue2.0 中使用transition实现动画效果使用心得
2018/08/13 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
小程序实现左右来回滚动字幕效果
2018/12/28 Javascript
vue el-tree 默认展开第一个节点的实现代码
2020/05/15 Javascript
[36:20]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.17
2020/12/18 DOTA
浅谈python多线程和队列管理shell程序
2015/08/04 Python
Python实现两个list对应元素相减操作示例
2017/06/09 Python
tornado 多进程模式解析
2018/01/15 Python
便捷提取python导入包的属性方法
2018/10/15 Python
python中for循环输出列表索引与对应的值方法
2018/11/07 Python
解决python中画图时x,y轴名称出现中文乱码的问题
2019/01/29 Python
Python3 requests文件下载 期间显示文件信息和下载进度代码实例
2019/08/16 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
2019/11/28 Python
pycharm配置python 设置pip安装源为豆瓣源
2021/02/05 Python
css3制作彩色边线3d立体按钮的示例(css3按钮)
2014/05/06 HTML / CSS
SEPHORA丝芙兰捷克官网:购买香水、化妆品和护肤品
2018/11/26 全球购物
Watch Station官方网站:世界一流的手表和智能手表
2020/01/05 全球购物
电气工程及其自动化自我评价四篇
2013/09/24 职场文书
工厂门卫的岗位职责
2014/07/27 职场文书
黄河绝恋观后感
2015/06/08 职场文书
2016年领导干部正风肃纪心得体会
2015/10/09 职场文书