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 相关文章推荐
SharePoint 客户端对象模型 (一) ECMA Script
May 22 Javascript
在js(jquery)中获得文本框焦点和失去焦点的方法
Dec 04 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
Jul 25 Javascript
javascript确认框的三种使用方法
Dec 17 Javascript
jquery实现Li滚动时滚动条自动添加样式的方法
Aug 10 Javascript
JS实现横向与竖向两个选项卡Tab联动的方法
Sep 27 Javascript
浅谈jQuery中ajaxPrefilter的应用
Aug 01 Javascript
AngularJS实现使用路由切换视图的方法
Jan 24 Javascript
Express + Session 实现登录验证功能
Sep 08 Javascript
详解webpack提取第三方库的正确姿势
Dec 22 Javascript
Vue SPA 初次进入加载动画实现代码
Nov 14 Javascript
如何手写简易的 Vue Router
Oct 10 Javascript
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 正则匹配函数体
2009/08/25 PHP
php中使用DOM类读取XML文件的实现代码
2011/12/14 PHP
PHP制作万年历
2015/01/07 PHP
Yii框架上传图片用法总结
2016/03/28 PHP
Laravel学习教程之IOC容器的介绍与用例
2017/08/15 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
php实现的生成排列算法示例
2019/07/25 PHP
jQuery与ExtJS之选择实例分析
2010/08/19 Javascript
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
JS 两个字符串时间的天数差计算
2013/08/25 Javascript
多个jQuery版本共存的处理方案
2015/03/17 Javascript
不使用script导入js文件的几种方法
2016/10/27 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
微信小程序实现MUI数字输入框效果
2018/01/31 Javascript
vue工程全局设置ajax的等待动效的方法
2019/02/22 Javascript
JS实现选项卡效果的代码实例
2019/05/20 Javascript
浅谈javascript错误处理
2019/08/11 Javascript
详解mpvue开发微信小程序基础知识
2019/09/23 Javascript
利用Python实现颜色色值转换的小工具
2016/10/27 Python
详解Tensorflow数据读取有三种方式(next_batch)
2018/02/01 Python
Python切片索引用法示例
2018/05/15 Python
Python socket实现的简单通信功能示例
2018/08/21 Python
深入理解Django自定义信号(signals)
2018/10/15 Python
Python线程指南分享
2019/11/19 Python
python实现俄罗斯方块游戏(改进版)
2020/03/13 Python
python实现定时发送邮件
2020/12/23 Python
中外合拍动画首获奥斯卡提名,“上海出品”《飞奔去月球》能否拿下最终大奖?
2021/03/16 国漫
浅谈css3中calc在less编译时被计算的解决办法
2017/12/04 HTML / CSS
优秀技术工人先进材料
2014/02/17 职场文书
2015年世界无车日活动总结
2015/03/23 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
《秋思》教学反思
2016/02/23 职场文书
在 Golang 中实现 Cache::remember 方法详解
2021/03/30 Python
go语言求任意类型切片的长度操作
2021/04/26 Golang
python通过opencv调用摄像头操作实例分析
2021/06/07 Python