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 相关文章推荐
document.designMode的功能与使用方法介绍
Nov 22 Javascript
stream.js 一个很小、完全独立的Javascript类库
Oct 28 Javascript
使用简洁的jQuery方法实现隔行换色功能
Jan 02 Javascript
JS中数组Array的用法示例介绍
Feb 20 Javascript
JS动态显示表格上下frame的方法
Mar 31 Javascript
基于jQuery实现搜索关键字自动匹配功能
Mar 26 Javascript
JavaScript中rem布局在react中的应用
Dec 09 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
Jan 23 Javascript
jquery树形菜单效果的简单实例
Jun 06 Javascript
基于JavaScript实现移动端无限加载分页
Mar 27 Javascript
jquery中有哪些api jQuery主要API
Nov 20 jQuery
layui使用templet格式化表格数据的方法
Sep 16 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
基于MySQL分区性能的详细介绍
2013/05/02 PHP
PHP错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法
2014/06/23 PHP
分享10段PHP常用代码
2015/11/11 PHP
php ajax异步读取rss文档数据
2016/03/29 PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
2016/12/24 PHP
JavaScript 继承详解(二)
2009/07/13 Javascript
Jquery实现网页跳转或用命令打开指定网页的解决方法
2013/07/09 Javascript
浅析js中取绝对值的2种方法
2013/07/09 Javascript
js带按钮的提示框可供选择示例代码
2013/09/17 Javascript
jquery中的$(document).ready()使用小结
2014/02/14 Javascript
网页中表单按回车就自动提交的问题的解决方案
2014/11/03 Javascript
jQuery ajaxForm()的应用
2016/10/14 Javascript
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
js实现3D图片环展示效果
2017/03/09 Javascript
Vue声明式渲染详解
2017/05/17 Javascript
JS实现的简单标签点击切换功能示例
2017/09/21 Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
2019/11/19 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
python函数局部变量用法实例分析
2015/08/04 Python
python中私有函数调用方法解密
2016/04/29 Python
Python中作用域的深入讲解
2018/12/10 Python
python读取txt文件中特定位置字符的方法
2018/12/24 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
python函数定义和调用过程详解
2020/02/09 Python
python——全排列数的生成方式
2020/02/26 Python
Python通过Tesseract库实现文字识别
2020/03/05 Python
selenium自动化测试入门实战
2020/12/21 Python
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
校园广播稿500字
2014/02/04 职场文书
协议书与合同的区别
2014/04/18 职场文书
1亿有多大教学反思
2014/05/01 职场文书
个人考核材料
2014/05/15 职场文书
长城导游词
2015/01/30 职场文书
2015年幼儿园中班开学寄语
2015/05/27 职场文书
寻找最美乡村教师观后感
2015/06/18 职场文书
Nginx流量拷贝ngx_http_mirror_module模块使用方法详解
2022/04/07 Servers