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 相关文章推荐
PJBlog插件 防刷新的在线播放器
Oct 25 Javascript
javascript fullscreen全屏实现代码
Apr 09 Javascript
jquery实现图片按比例缩放示例
Jul 01 Javascript
jquery实现简单的轮换出现效果实例
Jul 23 Javascript
JavaScript动态添加css样式和script标签
Jul 19 Javascript
BootStrap入门教程(三)之响应式原理
Sep 19 Javascript
详解vue表单验证组件 v-verify-plugin
Apr 19 Javascript
深入解析Vue 组件命名那些事
Jul 18 Javascript
jquery实现限制textarea输入字数的方法
Sep 06 jQuery
如何使用Node.js爬取任意网页资源并输出PDF文件到本地
Jun 17 Javascript
vue项目配置使用flow类型检查的步骤
Mar 18 Javascript
实现vuex原理的示例
Oct 21 Javascript
仅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
新手配置 PHP 调试环境(IIS+PHP+MYSQL)
2007/01/10 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
PHP支付宝当面付2.0代码
2018/12/21 PHP
项目实践之javascript技巧
2007/12/06 Javascript
XHTML下,JS浮动代码失效的问题
2009/11/12 Javascript
客户端限制只能上传jpg格式图片的js代码
2010/12/09 Javascript
JQuery的Ajax跨域请求原理概述及实例
2013/04/26 Javascript
javascript使用onclick事件改变选中行的颜色
2013/12/30 Javascript
JS图像无缝滚动脚本非常好用
2014/02/10 Javascript
node.js中的fs.lstat方法使用说明
2014/12/16 Javascript
javascript异步编程代码书写规范Promise学习笔记
2015/02/11 Javascript
JavaScript运算符小结
2015/06/03 Javascript
javascript实现类似百度分享功能的方法
2015/07/27 Javascript
一起学写js Calender日历控件
2016/04/14 Javascript
深入理解JavaScript单体内置对象
2016/06/06 Javascript
js字符串引用的两种方式(必看)
2016/09/18 Javascript
基于javascript实现数字英文验证码
2017/01/25 Javascript
bootstrap输入框组使用方法
2017/02/07 Javascript
Nuxt升级2.0.0时出现的问题(小结)
2018/10/08 Javascript
jQuery简单实现根据日期计算星期几的方法
2019/01/09 jQuery
python获取糗百图片代码实例
2013/12/18 Python
浅谈python中的实例方法、类方法和静态方法
2017/02/17 Python
Python中一些不为人知的基础技巧总结
2018/05/19 Python
举例详解CSS3中的Transition
2015/07/15 HTML / CSS
html5 canvas绘制放射性渐变色效果
2018/01/04 HTML / CSS
Staples加拿大官方网站:办公用品一站式采购
2016/09/25 全球购物
Harrods英国:世界领先的奢侈品百货商店
2020/09/23 全球购物
党支部书记先进事迹
2014/01/17 职场文书
中学家长会邀请函
2014/01/17 职场文书
群众路线教育党课主持词
2014/04/01 职场文书
工伤事故赔偿协议书(标准)
2014/09/29 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
基层党员群众路线教育实践活动个人对照检查材料思想汇报
2014/10/05 职场文书
地陪导游欢迎词
2015/01/26 职场文书
社区三八妇女节活动总结
2015/02/06 职场文书
JavaScript 数组去重详解
2021/09/15 Javascript