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 相关文章推荐
jquery鼠标滑过提示title具体实现代码
Aug 06 Javascript
jquery将一个表单序列化为一个对象的方法
Jan 03 Javascript
js 赋值包含单引号双引号问题的解决方法
Feb 26 Javascript
所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解
May 27 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
Dec 04 Javascript
JS无缝滚动效果实现方法分析
Dec 21 Javascript
微信小程序 用户数据解密详细介绍
Jan 09 Javascript
jQuery实现优雅的弹窗效果(6)
Feb 08 Javascript
详解vue-cli中配置sass
Jun 21 Javascript
小程序实现按下录音松开识别语音
Nov 22 Javascript
使用node.JS中的url模块解析URL信息
Feb 06 Javascript
JS实现京东商品分类侧边栏
Dec 11 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
解决中英文字符串长度问题函数
2007/01/16 PHP
THINKPHP+JS实现缩放图片式截图的实现
2010/03/07 PHP
PHP学习笔记之二
2011/01/17 PHP
php获取文件类型和文件信息的方法
2015/07/10 PHP
JavaScript 函数式编程的原理
2009/10/16 Javascript
推荐10个超棒的jQuery工具提示插件
2011/10/11 Javascript
js使用removeChild方法动态删除div元素
2014/08/01 Javascript
JavaScript中Function()函数的使用教程
2015/06/04 Javascript
Node.js事件驱动
2015/06/18 Javascript
jquery获取复选框checkbox的值的简单实现方法
2016/05/26 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
2016/07/12 Javascript
基于jQuery实现一个marquee无缝滚动的插件
2017/03/09 Javascript
WdatePicker.js时间日期插件的使用方法
2017/07/26 Javascript
Angular17之Angular自定义指令详解
2018/01/21 Javascript
基于VuePress 轻量级静态网站生成器的实现方法
2018/04/17 Javascript
对node.js中render和send的用法详解
2018/05/14 Javascript
详解Node.js读写中文内容文件操作
2018/10/10 Javascript
微信小程序日历弹窗选择器代码实例
2019/05/09 Javascript
JS实现电商商品展示放大镜特效
2020/01/07 Javascript
[40:55]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#4Newbee VS Fnatic
2016/03/03 DOTA
Python求出0~100以内的所有素数
2018/01/23 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
2019/08/12 Python
python2.7使用scapy发送syn实例
2020/05/05 Python
Python中pass的作用与使用教程
2020/11/13 Python
美国Lolё官网:购买大胆而美丽的女性运动服装
2017/05/22 全球购物
大家访活动实施方案
2014/03/10 职场文书
党员对照检查材料思想汇报(党的群众路线)
2014/09/24 职场文书
2014年财务部工作总结
2014/11/11 职场文书
公务员政审个人总结
2015/02/12 职场文书
节约用电倡议书
2015/04/28 职场文书
企业法人任命书
2015/09/21 职场文书
干部理论学习心得体会
2016/01/21 职场文书
亲情作文之母爱
2019/09/25 职场文书
Win10 和 Win11可以共存吗? win10/11产品生命周期/服务更新介绍
2021/11/21 数码科技
默认网关不可用修复后过一会又不好使了解决方法
2022/04/08 数码科技
Redis sentinel哨兵集群的实现步骤
2022/07/15 Redis