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 相关文章推荐
经验几则 推荐
Sep 05 Javascript
XHTML-Strict 内允许出现的标签
Dec 11 Javascript
js为空或不是对象问题的快速解决方法
Dec 11 Javascript
JS delegate与live浅析
Dec 21 Javascript
JavaScript实现点击按钮切换网页背景色的方法
Oct 17 Javascript
jQuery实现的AJAX简单弹出层效果代码
Nov 26 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
Nov 08 jQuery
深入理解 Koa 框架中间件原理
Oct 18 Javascript
关于layui时间回显问题的解决方法
Sep 24 Javascript
js实现页面导航层级指示效果
Aug 25 Javascript
JavaScript实现alert弹框效果
Nov 19 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
Dec 14 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
PHP 模板高级篇总结
2006/12/21 PHP
基于php验证码函数的使用示例
2013/05/03 PHP
php实现查看邮件是否已被阅读的方法
2013/12/03 PHP
php实现微信公众号创建自定义菜单功能的实例代码
2019/06/11 PHP
让你的PHP,APACHE,NGINX支持大文件上传
2021/03/09 PHP
实现复选框全选/全不选切换
2006/12/23 Javascript
基于jQuery的一个扩展form序列化到json对象
2010/12/09 Javascript
jQuery学习笔记 操作jQuery对象 CSS处理
2012/09/19 Javascript
JavaScript根据数据生成百分比图和柱状图的实例代码
2013/07/14 Javascript
js获取当前页面的url网址信息
2014/06/12 Javascript
动态加载js、css的简单实现代码
2016/05/26 Javascript
JS获取和修改元素样式的实例代码
2016/08/06 Javascript
JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法
2016/08/19 Javascript
Vue.js每天必学之数据双向绑定
2016/09/05 Javascript
微信小程序 底部导航栏目开发资料
2016/12/05 Javascript
jQuery表单元素过滤选择器用法实例分析
2019/02/20 jQuery
微信小程序的线程架构【推荐】
2019/05/14 Javascript
python基于queue和threading实现多线程下载实例
2014/10/08 Python
python实现井字棋游戏
2020/03/30 Python
基于Python实现一个简单的银行转账操作
2016/03/06 Python
Python中基础的socket编程实战攻略
2016/06/01 Python
浅析Python3爬虫登录模拟
2018/02/07 Python
一看就懂得Python的math模块
2018/10/21 Python
python中bs4.BeautifulSoup的基本用法
2019/07/27 Python
Django 拆分model和view的实现方法
2019/08/16 Python
美国家具网站:Cymax
2016/09/17 全球购物
匡威爱尔兰官网:Converse爱尔兰
2019/06/09 全球购物
英语专业大学生求职简历的自我评价
2013/10/18 职场文书
主管职责范文
2013/11/09 职场文书
火车来了教学反思
2014/02/11 职场文书
法人委托书范本
2014/04/04 职场文书
毕业论文评语大全
2014/04/29 职场文书
环保建议书300字
2014/05/14 职场文书
先进个人申报材料
2014/12/30 职场文书
小学教师个人总结
2015/02/05 职场文书
不负正版帝国之名 《重返帝国》引领SLG手游制作新的标杆
2022/04/07 其他游戏