jQuery setTimeout传递字符串参数报错的解决方法


Posted in Javascript onJune 09, 2014

当你打算调用一些jQuery代码显示隐藏的一个元素,并调用setTimeout()在一段延时之后设置其HTML的内容:

整个页面的代码是这样的.

<span style="font-size:18px;"><html> 
<head> 
<title></title> 
</head> 
<body> 
<a href="#" id='heihei' onclick="showNext('I am veinei ')">show next</a> 
<a href="#" id="log" style="display:none" >yes,I am the next </a> 
<script type="text/javascript" src="jquery-1.10.2.min.js"></script> 
<script type="text/javascript"> 
function showNext(text){ 
setTimeout("$('#log').show().text(text)",1000); 
} 
</script> 
</body> 
</html> 
</span>

.show()确实调用成功了.但是.text()调用失败了.console显示 text未定义.

对于这个问题,我确实没有找到更好的答案...我想是不是jQuery对这个传入setTimeout()函数的内容做了修改导致变量失效.

我紧接着做了下一个实验.

<span style="font-size:18px;"><html> 
<head> 
<title></title> 
</head> 
<body> 
<a href="#" id='heihei' onclick="showNext('I am veinei ')">show next</a> 
<a href="#" id="log" style="display:none" >yes,I am the next </a> 
<script type="text/javascript" src="jquery-1.10.2.min.js"></script> 
<script type="text/javascript"> 
function showNext(text){ 
setTimeout("alert(text)",1000); 
} 
</script> 
</body> 
</html> 
</span>

我要看看是不是确实是jQuery出了问题.得到的是同样的错误.

后来找了本书看了看.发现了问题的所在.

setTimeout() 接受一个字符串参数时,它执行于全局作用域,也就是说,它位于任何函数之外.最简单的修复手段就是使用一个局部函数(匿名函数)来解决这个问题.

<span style="font-size:18px;"><html> 
<head> 
<title></title> 
</head> 
<body> 
<a href="#" id='heihei' onclick="showNext('I am veinei ')">show next</a> 
<a href="#" id="log" style="display:none" >yes,I am the next </a> 
<script type="text/javascript" src="jquery-1.10.2.min.js"></script> 
<script type="text/javascript"> 
function showNext(text){ 
setTimeout(function(){$('#log').show().text(text);},1000); 
} 
</script> 
</body> 
</html> 
</span>

成功解决这个问题.
Javascript 相关文章推荐
javascript 触发HTML元素绑定的函数
Sep 11 Javascript
JQUBAR1.1 jQuery 柱状图插件发布
Nov 28 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
Nov 02 Javascript
js获取checkbox值的方法
Jan 28 Javascript
jQuery.datatables.js插件用法及api实例详解
Oct 28 Javascript
jQuery实现页面顶部下拉广告
Dec 30 Javascript
jQuery正则验证注册页面经典实例
Jun 10 jQuery
小程序清理本地缓存的方法
Aug 17 Javascript
原生JS实现的简单小钟表功能示例
Aug 30 Javascript
JS返回页面时自动回滚到历史浏览位置
Sep 26 Javascript
layui实现三级联动效果
Jul 26 Javascript
jquery实现商品sku多属性选择功能(商品详情页)
Dec 20 jQuery
js去除输入框中所有的空格和禁止输入空格的方法
Jun 09 #Javascript
Node.js(安装,启动,测试)
Jun 09 #Javascript
关于JS数组追加数组采用push.apply的问题
Jun 09 #Javascript
javascript浏览器兼容教程之事件处理
Jun 09 #Javascript
jQuery学习笔记之toArray()
Jun 09 #Javascript
jQuery学习笔记之jQuery原型属性和方法
Jun 09 #Javascript
jQuery简易图片放大特效示例代码
Jun 09 #Javascript
You might like
php之对抗Web扫描器的脚本技巧
2008/10/01 PHP
php内核解析:PHP中的哈希表
2014/01/30 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
2014/06/22 PHP
PHP CodeIgniter框架的工作原理研究
2015/03/30 PHP
jquery 可排列的表实现代码
2009/11/13 Javascript
Extjs4 GridPanel 的几种样式使用介绍
2013/04/18 Javascript
JQuery为textarea添加maxlength属性并且兼容IE
2013/04/25 Javascript
如何使用jquery控制CSS样式,并且取消Css样式(如背景色,有实例)
2013/07/09 Javascript
js 动态修改css文件的方法
2014/08/05 Javascript
Html5的placeholder属性(IE兼容)实现代码
2014/08/30 Javascript
jQuery操作属性和样式详解
2016/04/13 Javascript
AngularJS基础 ng-dblclick 指令用法
2016/08/01 Javascript
js仿腾讯QQ的web登陆界面
2016/08/19 Javascript
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
微信小程序定位当前城市的方法
2018/07/19 Javascript
vue项目使用axios发送请求让ajax请求头部携带cookie的方法
2018/09/26 Javascript
Vue+Element-UI实现上传图片并压缩
2019/11/26 Javascript
通过javascript实现扫雷游戏代码实例
2020/02/09 Javascript
vuex分模块后,实现获取state的值
2020/07/26 Javascript
[01:41]DOTA2 2015国际邀请赛中国区预选赛第三日战报
2015/05/28 DOTA
[01:02:07]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
给Python初学者的一些编程技巧
2015/04/03 Python
Python抓取电影天堂电影信息的代码
2016/04/07 Python
修改 CentOS 6.x 上默认Python的方法
2019/09/06 Python
弄懂这56个Python使用技巧(轻松掌握Python高效开发)
2019/09/18 Python
Python使用psutil获取进程信息的例子
2019/12/17 Python
Python实现CNN的多通道输入实例
2020/01/17 Python
解决Django no such table: django_session的问题
2020/04/07 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
2020/04/25 Python
中国入世承诺
2014/04/01 职场文书
应届生自荐信
2014/06/30 职场文书
2014年党员教师自我剖析材料
2014/09/30 职场文书
倡议书作文
2015/01/19 职场文书
2019年图书室自查报告范本
2019/10/12 职场文书
Golang使用Panic与Recover进行错误捕获
2022/03/22 Golang
多台电脑共享文件怎么设置?多台电脑共享文件操作教程
2022/04/08 数码科技