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下checked取值问题的解决方法
Aug 09 Javascript
Jquery显示、隐藏元素以及添加删除样式
Aug 09 Javascript
JS鼠标滑过图片时切换图片实现思路
Sep 12 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
Nov 13 Javascript
js实现文本框中焦点在最后位置
Mar 04 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
Aug 24 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
May 25 Javascript
Bootstrap Search Suggest使用例子
Dec 21 Javascript
vue如何根据网站路由判断页面主题色详解
Nov 02 Javascript
详解Vue 匿名、具名和作用域插槽的使用方法
Apr 22 Javascript
vue使用axios实现excel文件下载的功能
Jul 16 Javascript
浅谈js数组splice删除某个元素爬坑
Oct 14 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
wordpress网站转移到本地运行测试的方法
2017/03/15 PHP
cloudgamer出品ImageZoom 图片放大效果
2010/04/01 Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
getElementByIdx_x js自定义getElementById函数
2012/01/24 Javascript
js判断输入是否为数字的具体实例
2013/08/03 Javascript
jquery的ajax异步请求接收返回json数据实例
2014/06/16 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
JS+CSS实现美化的下拉列表框效果
2015/08/11 Javascript
JavaScript实现仿新浪微博大厅和腾讯微博首页滚动特效源码
2015/09/15 Javascript
JavaScript中原型链存在的问题解析
2016/09/25 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
JS+php后台实现文件上传功能详解
2019/03/02 Javascript
javascript绘制简单钟表效果
2020/04/07 Javascript
Vue + element 实现多选框组并保存已选id集合的示例代码
2020/06/03 Javascript
jQuery实现异步上传一个或多个文件
2020/08/17 jQuery
js实现扫雷源代码
2020/11/27 Javascript
[01:52]2014DOTA2西雅图邀请赛 V社开大会你不知道的小秘密
2014/07/08 DOTA
Python实时获取cmd的输出
2015/12/13 Python
pytorch中tensor的合并与截取方法
2018/07/26 Python
使用PyQt4 设置TextEdit背景的方法
2019/06/14 Python
Python序列化与反序列化pickle用法实例
2019/11/11 Python
django model 条件过滤 queryset.filter(**condtions)用法详解
2020/05/20 Python
Pycharm修改python路径过程图解
2020/05/22 Python
python3.9实现pyinstaller打包python文件成exe
2020/12/13 Python
Python3.9.1中使用split()的处理方法(推荐)
2021/02/07 Python
全球领先的各类汽车配件零售商:Advance Auto Parts
2016/08/26 全球购物
网页设计个人找工作求职信
2013/11/28 职场文书
会计应聘求职信范文
2013/12/17 职场文书
2014年国培研修感言
2014/03/09 职场文书
活动总结报告范文
2014/05/04 职场文书
缅怀革命先烈演讲稿
2014/05/14 职场文书
安全生产年活动总结
2014/08/29 职场文书
公务员群众路线专题民主生活会发言材料
2014/09/17 职场文书
科长个人四风问题整改措施思想汇报
2014/10/13 职场文书
售房协议书范本2014
2014/10/23 职场文书
全国法制宣传日活动总结2014
2014/11/01 职场文书