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 相关文章推荐
Code: write(s,d) 输出连续字符串
Aug 19 Javascript
JavaScript基础语法让人疑惑的地方小结
May 23 Javascript
设置checkbox为只读(readOnly)的两种方式
Oct 11 Javascript
jquery showModelDialog的使用方法示例详解
Nov 19 Javascript
原生javascript实现图片按钮切换
Jan 12 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
Feb 17 Javascript
babel的使用及安装配置教程
Feb 22 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
Apr 17 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
Sep 27 Javascript
TypeScript 引用资源文件后提示找不到的异常处理技巧
Jul 15 Javascript
Echarts.js无法引入问题解决方案
Oct 30 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
Nov 11 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 会话(session 时间设定)使用入门代码
2008/06/05 PHP
header导出Excel应用示例
2014/01/24 PHP
Yii数据模型中rules类验证器用法分析
2016/07/15 PHP
Laravel5.7 Eloquent ORM快速入门详解
2019/04/12 PHP
基于jquery的固定表头和列头的代码
2012/05/03 Javascript
js简单实现HTML标签Select联动带跳转
2013/10/23 Javascript
js获取客户端网卡的IP地址、MAC地址
2014/03/26 Javascript
cocos2dx骨骼动画Armature源码剖析(三)
2015/09/08 Javascript
jQuery实现按钮点击遮罩加载及处理完后恢复的效果
2016/06/07 Javascript
jQuery 中ajax异步调用的四种方式
2016/06/28 Javascript
关于vue面试题汇总
2018/03/20 Javascript
微信小程序实现点击效果
2019/06/21 Javascript
jQuery实现B2B网站后台管理系统侧导航
2020/07/08 jQuery
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
[00:42]《辉夜杯》—职业组预选赛12月3日15点 正式打响
2015/12/03 DOTA
[01:23:59]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 VP vs Secret
2018/04/03 DOTA
python实现寻找最长回文子序列的方法
2018/06/02 Python
python 定时器,轮询定时器的实例
2019/02/20 Python
Python Flask框架扩展操作示例
2019/05/03 Python
Django中的静态文件管理过程解析
2019/08/01 Python
简单易懂Pytorch实战实例VGG深度网络
2019/08/27 Python
Python实现栈和队列的简单操作方法示例
2019/11/29 Python
Python数据可视化:顶级绘图库plotly详解
2019/12/07 Python
python实现手势识别的示例(入门)
2020/04/15 Python
北美大型运动类产品商城:Champs Sports
2017/01/12 全球购物
应聘收银员个人的求职信
2013/11/30 职场文书
离退休人员聘用协议书
2014/11/24 职场文书
大学生英文求职信范文
2015/03/19 职场文书
2015年事业单位工作总结
2015/04/27 职场文书
领导新年致辞2016
2015/07/29 职场文书
请病假条范文
2015/08/17 职场文书
《索溪峪的野》教学反思
2016/02/19 职场文书
如果用一句诗总结你的上半年,你会用哪句呢?
2019/07/16 职场文书
SQL中的三种去重方法小结
2021/11/01 SQL Server
Mysql查询时间区间日期列表,不会由于数据表数据影响
2022/04/19 MySQL
Python 中面向接口编程
2022/05/20 Python