关于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 相关文章推荐
js trim函数 去空格函数与正则集锦
Nov 20 Javascript
JQuery,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述
Apr 15 Javascript
Js控制滑轮左右滑动实例
Feb 13 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
Mar 07 Javascript
JQuery 在文档中查找指定name的元素并移除的实现方法
May 19 Javascript
JS原型与原型链的深入理解
Feb 15 Javascript
本地搭建微信小程序服务器的实现方法
Oct 27 Javascript
Vue父组件调用子组件事件方法
Feb 23 Javascript
使用Vue自定义指令实现Select组件
May 24 Javascript
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
Jul 04 Javascript
解决vue里a标签值解析变量,跳转页面,前面加默认域名端口的问题
Jul 22 Javascript
vue+Element-ui实现分页效果
Nov 15 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框架的性能
2008/01/10 PHP
一个php Mysql类 可以参考学习熟悉下
2009/06/21 PHP
PHP实现变色验证码实例
2014/01/06 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
2014/01/19 PHP
解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
2017/02/25 PHP
IIS 7.5 asp Session超时时间设置方法
2017/04/17 PHP
javascript代码编写需要注意的7个小细节小结
2011/09/21 Javascript
jQuery当鼠标悬停时放大图片的效果实例
2013/07/03 Javascript
禁用页面部分JavaScript不是全部而是部分
2014/09/03 Javascript
JS的location.href跳出框架打开新页面的方法
2014/09/04 Javascript
当前流行的JavaScript代码风格指南
2014/09/10 Javascript
基于jQuery实现文本框缩放以及上下移动功能
2014/11/24 Javascript
jQuery横向擦除焦点图特效代码分享
2015/09/06 Javascript
跟我学习javascript的循环
2015/11/18 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
2016/02/28 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
2017/07/28 Javascript
Vue 全局loading组件实例详解
2018/05/29 Javascript
微信小程序实现天气预报功能
2018/07/18 Javascript
vue 内置过滤器的使用总结(附加自定义过滤器)
2018/12/11 Javascript
javascript浅层克隆、深度克隆对比及实例解析
2020/02/09 Javascript
vue实现在线学生录入系统
2020/05/30 Javascript
Python使用百度API上传文件到百度网盘代码分享
2014/11/08 Python
使用SAE部署Python运行环境的教程
2015/05/05 Python
浅谈pyhton学习中出现的各种问题(新手必看)
2017/05/17 Python
Python3中的json模块使用详解
2018/05/05 Python
Python入门Anaconda和Pycharm的安装和配置详解
2019/07/16 Python
Etam艾格英国官网:法国著名女装品牌
2019/04/15 全球购物
英超联赛的首选足球:Mitre足球
2019/05/06 全球购物
建筑文秘专业个人求职信范文
2013/12/28 职场文书
公司成本主管岗位责任制
2014/02/21 职场文书
青春雷锋观后感
2015/06/10 职场文书
电视新闻稿
2015/07/17 职场文书
关于职业道德的心得体会
2016/01/18 职场文书
2019年国庆祝福语(70句)
2019/09/19 职场文书
MySQL触发器的使用
2021/05/24 MySQL