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 相关文章推荐
JQuery 简便实现页面元素数据验证功能
Mar 24 Javascript
javascript中最常用的继承模式 组合继承
Aug 12 Javascript
javascript定时保存表单数据的代码
Mar 17 Javascript
javascript适合移动端的日期时间拾取器
Nov 10 Javascript
Angular的MVC和作用域
Dec 26 Javascript
jQuery插件FusionWidgets实现的Bulb图效果示例【附demo源码下载】
Mar 23 jQuery
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
Apr 05 Javascript
jquery中done和then的区别(详解)
Dec 19 jQuery
js中document.write和document.writeln的区别
Mar 11 Javascript
jQuery实现轮播图及其原理详解
Apr 12 jQuery
详解关于vue2.0工程发布上线操作步骤
Sep 27 Javascript
Vuejs中的watch实例详解(监听者)
Jan 05 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中curl、fsocket、file_get_content三个函数的使用比较
2014/05/09 PHP
php中Snoopy类用法实例
2015/06/19 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
2015/07/08 PHP
标准版Eclipse搭建PHP环境的详细步骤
2015/11/18 PHP
Symfony2 session用法实例分析
2016/02/04 PHP
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
js鼠标左右键 键盘值小结
2010/06/11 Javascript
模仿百度三维地图的js数据分享
2011/05/12 Javascript
jquery 页面滚动到指定DIV实现代码
2013/09/25 Javascript
javascript数组操作总结和属性、方法介绍
2014/04/05 Javascript
jQuery+PHP星级评分实现方法
2015/10/02 Javascript
学习使用grunt来打包JavaScript和CSS程序的教程
2016/01/04 Javascript
node.js使用cluster实现多进程
2016/03/17 Javascript
JS实现的图片预览插件与用法示例【不上传图片】
2016/11/25 Javascript
prototype与__proto__区别详细介绍
2017/01/09 Javascript
JavaScript高阶函数_动力节点Java学院整理
2017/06/28 Javascript
js Dom实现换肤效果
2017/10/21 Javascript
在vue中使用Echarts利用watch做动态数据渲染操作
2020/07/20 Javascript
Django中的ajax请求
2018/10/19 Python
python实现AES加密和解密
2019/03/27 Python
Python3内置模块之base64编解码方法详解
2019/07/13 Python
阿里云ECS服务器部署django的方法
2019/08/29 Python
Python模块汇总(常用第三方库)
2019/10/07 Python
基于Python的接口自动化读写excel文件的方法
2021/01/15 Python
基于第一个PhoneGap(cordova)的应用详解
2013/05/03 HTML / CSS
HTML5拖拽文件上传的示例代码
2021/03/04 HTML / CSS
阿里健康官方海外旗舰店:阿里健康国际自营
2017/11/24 全球购物
德国高尔夫商店:Par71.de
2020/11/29 全球购物
学习十八大报告感言
2014/02/04 职场文书
运动会通讯稿150字
2014/02/15 职场文书
个人四风问题整改措施
2014/10/24 职场文书
材料采购员岗位职责
2015/04/03 职场文书
第一节英语课开场白
2015/06/01 职场文书
宣传稿格式范文
2015/07/23 职场文书
python xlwt模块的使用解析
2021/04/13 Python
分享一些Java的常用工具
2021/06/11 Java/Android