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 相关文章推荐
Mootools 1.2教程 输入过滤第一部分(数字)
Sep 15 Javascript
用javascript获取当页面上鼠标光标位置和触发事件的对象的代码
Dec 09 Javascript
jQuery 方法大全方便学习参考
Feb 25 Javascript
JS日期加减,日期运算代码
Nov 05 Javascript
原生JavaScript实现滚动条效果
Mar 24 Javascript
AngularJS入门心得之directive和controller通信过程
Jan 25 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
Jul 07 Javascript
JS匿名函数实例分析
Nov 26 Javascript
详谈构造函数加括号与不加括号的区别
Oct 26 Javascript
使用Vue开发动态刷新Echarts组件的教程详解
Mar 22 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
Sep 01 Javascript
详解iview的checkbox多选框全选时校验问题
Jun 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
Thinkphp中import的几个用法详细介绍
2014/07/02 PHP
Javascript控制页面链接在新窗口打开具体方法
2013/08/16 Javascript
jquery在项目中做复选框时遇到的一些问题笔记
2013/11/17 Javascript
JavaScript闭包详解
2015/02/02 Javascript
JS中Location使用详解
2015/05/12 Javascript
jQuery插件ImageDrawer.js实现动态绘制图片动画(附源码下载)
2016/02/25 Javascript
JS组件Bootstrap实现下拉菜单效果代码
2016/04/26 Javascript
Vuejs第十篇之vuejs父子组件通信
2016/09/06 Javascript
jQuery css() 方法动态修改CSS属性
2016/09/25 Javascript
vue2.0 keep-alive最佳实践
2017/07/06 Javascript
vue+vuex+axios实现登录、注册页权限拦截
2018/03/09 Javascript
详解基于vue的服务端渲染框架NUXT
2018/06/20 Javascript
js中Array对象的常用遍历方法详解
2019/01/17 Javascript
vue路由导航守卫和请求拦截以及基于node的token认证的方法
2019/04/07 Javascript
jquery实现动态创建form并提交的方法示例
2019/05/27 jQuery
微信小程序图片自适应实现解析
2020/01/21 Javascript
[00:14]护身甲盾
2019/03/06 DOTA
将图片文件嵌入到wxpython代码中的实现方法
2014/08/11 Python
Python httplib模块使用实例
2015/04/11 Python
Python线程的两种编程方式
2015/04/14 Python
Python实现发送QQ邮件的封装
2017/07/14 Python
Python并行分布式框架Celery详解
2018/10/15 Python
Python面向对象思想与应用入门教程【类与对象】
2019/04/12 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
2020/01/20 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
2020/05/26 Python
PyCharm中如何直接使用Anaconda已安装的库
2020/05/28 Python
哪些是python中web开发框架
2020/06/17 Python
Python浮点型(float)运算结果不正确的解决方案
2020/09/22 Python
荷兰领先的百货商店:De Bijenkorf
2018/10/17 全球购物
英国女性时尚品牌:Apricot
2018/12/04 全球购物
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
幼儿园健康教育方案
2014/06/14 职场文书
元旦晚会主持词开场白
2015/05/28 职场文书
一篇文章学会Vue中间件管道
2021/06/20 Vue.js
Python使用pyecharts控件绘制图表
2022/06/05 Python