关于setInterval、setTimeout在jQuery中的使用注意事项


Posted in Javascript onSeptember 28, 2011

以前写定时器的时候,总是习惯直接

setInterval("fn()",2000);
最近碰到个问题,在使用jquery写定时器时,总是会出现fn不存在的错误提示,如下

$(function(){setInterval("fn()",2000);})
解决方法是去掉引号和括号,采用最原始的方法

$(function(){setInterval(fn,2000);})
另外一种就是在书写jq的扩展,如下

$(function(){ 
$.extend({ 
fn:function(){ 
alert("im fn!"); 
} 
}); 
setInterval("$.fn()",2000); 
});

以上写法都是没什么问题的。但是如果需要传递参数该如何?

像上面第一种写法,

$(function(){setInterval(fn,2000);})
如果写成

$(function(){setInterval(fn(para),2000);})
就报错了。这个比较经典,比较白痴。

这时你可以内置一个function,写成

$(function(){setInterval(function(){fn(para)},2000);})
这样也是可以的。

至于第二种方法如何传递,这就更简单了,我就不多说了。

发到博客仅当记忆使用,都是基础啊!也是初学者容易犯错的地方!

//========================

还是补充下第二种传参的方法。

先看段代码

$(function(){ 
$start = 1; 
$.extend({ 
a:function(t){ 
$index = t; 
alert($index); 
$start++; 
} 
}); 
setInterval("$.a("+$start+")",2000); 
});

有一些人会尝试这么去写,结果是什么?结果就是alert出来的,一直是1,不会增加。这里需要注意的是setInterval里面的第一个参数,这是一个语句,用双引号括了起来,里面的东西会被解释成变量。如果按照上面的写法,相当于

setInterval("$.a(1)",2000);
那么结果也就无可厚非了。正确的写法,当然是这样

$(function(){ 
$start = 1; 
$.extend({ 
a:function(t){ 
$index = t; 
alert($index); 
$start++; 
} 
}); 
setInterval("$.a($start)",2000); 
});

这时$start才会被解释成变量。语句相当于function(){a(变量)},而不是function(){a(值)}。
Javascript 相关文章推荐
EditPlus注册码生成器(js代码实现)
Mar 25 Javascript
关于jquery的多个选择器的使用示例
Oct 18 Javascript
js键盘事件的keyCode
Jul 29 Javascript
js判断是否按下了Shift键的方法
Jan 27 Javascript
跟我学习javascript创建对象(类)的8种方法
Nov 20 Javascript
浅谈JavaScript 覆盖原型以及更改原型
Aug 31 Javascript
适用于手机端的jQuery图片滑块动画
Dec 09 Javascript
JS实现身份证输入框的输入效果
Aug 21 Javascript
jQuery插件Validation表单验证详解
May 26 jQuery
js实现随机数小游戏
Jun 28 Javascript
浅谈vue权限管理实现及流程
Apr 23 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
Oct 24 Javascript
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
Sep 27 #Javascript
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
Sep 26 #Javascript
一个挺有意思的Javascript小问题说明
Sep 26 #Javascript
Jquery之Ajax运用 学习运用篇
Sep 26 #Javascript
jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果
Sep 26 #Javascript
在Windows上安装Node.js模块的方法
Sep 25 #Javascript
javascript权威指南 学习笔记之null和undefined
Sep 25 #Javascript
You might like
php学习之function的用法
2012/07/14 PHP
php7性能提升的原因详解
2019/10/13 PHP
jqPlot Option配置对象详解
2009/07/25 Javascript
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
2011/04/07 Javascript
jquery动画2.元素坐标动画效果(创建一个图片走廊)
2012/08/24 Javascript
js鼠标及对象坐标控制属性详细解析
2013/12/14 Javascript
Webpack 实现 Node.js 代码热替换
2015/10/22 Javascript
BootStrap智能表单demo示例详解
2016/06/13 Javascript
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
如何用JS/HTML将时间戳转换为“xx天前”的形式
2017/02/06 Javascript
Bootstrap table 定制提示语的加载过程
2017/02/20 Javascript
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
2018/05/26 Javascript
vue解决一个方法同时发送多个请求的问题
2018/09/25 Javascript
jQuery zTree树插件的使用教程
2019/08/16 jQuery
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS TNC
2018/03/30 DOTA
[01:08:24]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第一场 2月5日
2021/03/11 DOTA
Python爬虫框架Scrapy安装使用步骤
2014/04/01 Python
python清除字符串里非数字字符的方法
2015/07/02 Python
python编码最佳实践之总结
2016/02/14 Python
python re模块findall()函数实例解析
2018/01/19 Python
python 编码规范整理
2018/05/05 Python
微信公众号token验证失败解决方案
2019/07/22 Python
Selenium常见异常解析及解决方案示范
2020/04/10 Python
Python如何自动获取目标网站最新通知
2020/06/18 Python
HTML5进阶段内联标签汇总(小篇)
2016/07/13 HTML / CSS
世界上最大的二手相机店:KEN
2017/05/17 全球购物
POS解决方案:MUNBYN(热敏打印机、条形码扫描仪)
2020/06/09 全球购物
报关员个人职业生涯规划书
2014/03/12 职场文书
感恩父母的演讲稿
2014/05/06 职场文书
诉前财产保全担保书
2014/05/20 职场文书
人事行政专员岗位职责
2014/07/23 职场文书
党在我心中演讲稿
2014/09/02 职场文书
2014年民主评议党员工作总结
2014/12/02 职场文书
百善孝为先:关于孝道的经典语录
2019/10/18 职场文书
MySQL8.0的WITH查询详情
2021/08/30 MySQL