JQuery中html()方法使用不当带来的陷阱


Posted in Javascript onApril 07, 2011

查看源码

return this[0] && this[0].nodeType === 1 ? 
this[0].innerHTML.replace(rinlinejQuery, "") : 
null;

得知其通过非标准的但所有浏览器都支持的innerHTML实现。
有些使用者会用html()方法的返回值作为代码分支的条件,比如:
var str = $('#user').html(); 
if( str=='jack' ){ 
... 
}else if( str=='tom' ){ 
... 
}else if( str=='lily' ){ 
... 
}

多数情况下这没什么问题,但如果id=user的html元素内有空格,则不会得到想要的结果了。比如:
<div id="user"> jack</div> 
<script> 
alert(document.getElementById('user').innerHTML.length); 
</script>

div[id=user]内文本jack前不小心多了3个空格,这时候在各浏览器表现不一样:
IE6/78中,弹出字符串的长度是4,即忽略了空格。
IE9/Firefox/Safari/Chrome/Opera中,弹出则是7,即没有忽略空格。
这时候拿.html()的返回值作为代码分支的条件明显在非IE浏览器中会出错。
如果非要使用元素的html内容作为判断条件,解决办法很简单
1,写html时去掉空格
2,调用html()方法后再调用trim,如var str = $('#user').html().trim();

相关:

http://www.w3.org/TR/2008/WD-html5-20080610/dom.html#innerhtml0
仅IE6/7/8中innerHTML返回值忽略英文空格的问题

Javascript 相关文章推荐
JavaScript 10件让人费解的事情
Feb 15 Javascript
表单切换,用回车键替换Tab健(不支持IE)
Jul 20 Javascript
js数组中如何随机取出一个值
Jun 13 Javascript
JavaScript模拟重力状态下抛物运动的方法
Mar 03 Javascript
使用js实现的简单拖拽效果
Mar 18 Javascript
javascript同步服务器时间和同步倒计时小技巧
Sep 24 Javascript
javascript学习小结之prototype
Dec 03 Javascript
vuex的简单使用教程
Feb 02 Javascript
AngularJS发送异步Get/Post请求方法
Aug 13 Javascript
JavaScript实现多文件下载方法解析
Aug 07 Javascript
antd 表格列宽自适应方法以及错误处理操作
Oct 27 Javascript
Vue实现一种简单的无限循环滚动动画的示例
Jan 10 Vue.js
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
Apr 07 #Javascript
jQuery为iframe的body添加click事件的实现代码
Apr 07 #Javascript
JQUERY的属性选择符和自定义选择符使用方法(二)
Apr 07 #Javascript
Jquery Ajax的Get方式时需要注意URL地方
Apr 07 #Javascript
jquery对表单操作2
Apr 06 #Javascript
jQuery对表单的操作代码集合
Apr 06 #Javascript
24款非常有用的 jQuery 插件分享
Apr 06 #Javascript
You might like
域名和cookie问题(域名后缀)
2012/10/10 PHP
获取URL文件名后缀
2013/10/24 PHP
DEDE实现转跳属性文档在模板上调用出转跳地址
2016/11/04 PHP
关于ThinkPHP中的异常处理详解
2018/05/11 PHP
PHP htmlentities()函数用法讲解
2019/02/25 PHP
jquery ajax中使用jsonp的限制解决方法
2013/11/22 Javascript
JavaScript 实现鼠标拖动元素实例代码
2014/02/24 Javascript
一个判断抢购时间是否到达的简单的js函数
2014/06/23 Javascript
JavaScript数据类型之基本类型和引用类型的值
2015/04/01 Javascript
原生js实现数字字母混合验证码的简单实例
2015/12/10 Javascript
jQuery ajaxForm()的应用
2016/10/14 Javascript
js判断一个字符串是以某个字符串开头的简单实例
2016/12/27 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
2017/04/11 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
2017/04/20 jQuery
详解vuejs之v-for列表渲染
2017/06/22 Javascript
vue.js全局API之nextTick全面解析
2017/07/07 Javascript
微信小程序模板template简单用法示例
2018/12/04 Javascript
基于Nuxt.js项目的服务端性能优化与错误检测(容错处理)
2019/10/23 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
2020/09/04 Javascript
详解vite2.0配置学习(typescript版本)
2021/02/25 Javascript
[03:07]【DOTA2亚洲邀请赛】我们,梦开始的地方
2017/03/07 DOTA
[00:37]食人魔魔法师轮盘吉兆顺应全新至宝将拥有额外款式
2019/12/19 DOTA
Python实现的微信好友数据分析功能示例
2018/06/21 Python
python处理csv中的空值方法
2018/06/22 Python
11个Python3字典内置方法大全与示例汇总
2019/05/13 Python
opencv3/python 鼠标响应操作详解
2019/12/11 Python
pytorch快速搭建神经网络_Sequential操作
2020/06/17 Python
英国领先的电子、技术和办公用品购物网站:Ebuyer
2018/04/04 全球购物
PREMIUM-MALL法国:行李、箱包及配件在线
2019/05/30 全球购物
如何向接受结构参数的函数传入常数值
2016/02/17 面试题
浪费资源的建议书
2014/03/12 职场文书
争当四好少年演讲稿
2014/09/13 职场文书
庆祝教师节活动总结
2015/03/23 职场文书
工作态度检讨书范文
2015/05/06 职场文书
幼儿园语言教学反思
2016/02/23 职场文书
船舶调度指挥系统——助力智慧海事
2022/02/18 无线电