Dom操作之兼容技巧分享


Posted in Javascript onSeptember 20, 2011

例如:我们在获取ul下所有li元素的时候.或者是某个元素的下一个元素时.都有可能会碰到这讨厌的空格问题.当然在IE浏览器里这些空格会被自动过滤.而FF则没有那么勤劳.FF浏览器会把这些空格也看作为一个元素.如果你对Dom中的空格元素感到疑惑,请运行下面的代码.至少使用IE和FF两种浏览器测试.你会明白一切!

<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Dom</title> 
</head> 
<body> 
<h2>运行该代码以后.你会发现在IE里弹出3.在FF里弹出7.</h2> 
<ol id="list"> 
<li>html</li> 
<li>css</li> 
<li>dom</li> 
</ol> 
<script> 
var list = document.getElementById("list"); 
var list_child = list.childNodes; //获取ol中所有的子元素 
alert("ol中共有"+list_child.length+"个元素,分别是"); 
for(var i = 0; i<list_child.length; i++){ 
alert(list_child[i].tagName); 
} 
</script> 
</body> 
</html>

上面的代码演示了要获取ol元素中所有的子元素.并弹出ol内有几个子元素.我们可以看到ol中包含了3个li元素.在IE中弹出3这是正确的.那为什么到了FF和Chrome浏览器中会弹出7呢? 其实在你书写代码的时候.在元素与元素换行之间都会形成一个空格.(注意:不要以为回一次车就会形成一个空格.这是错误的,也就是说元素与元素之间的空白,你就是换几百次行.也算一个空格)FF和Chrome浏览器不会过滤这些空格元素.所以弹出7也是正确的.
下面我们用同样的html结构.来演示如何过滤删除这些空格元素.
<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Dom</title> 
</head> 
<body> 
<h2>运行该代码以后.你会发现在IE,FF,Chrome里返回的结果一样了.</h2> 
<ol id="list"> 
<li>html</li> 
<li>css</li> 
<li>dom</li> 
</ol> 
<script> 
function Del_space(elem){ //过滤空格的函数 
var elem_child = elem.childNodes; //获取所有子元素 
for(var i = 0;i<elem_child.length;i++){ 
//如果是文本节点,并且内容只包含空格则删除该节点 
if(elem_child[i].nodeName == "#text" && ! /\S/.test(elem_child[i].nodeValue)){ 
elem.removeChild(elem_child[i]);//如果该元素为空格则删除 
} 
} 
} 
Del_space(document.getElementById("list")); //删除ol中的所有空格 
var list = document.getElementById("list"); 
var list_child = list.childNodes; //获取ol中所有的子元素 
for(var i=0;i<list_child.length;i++){ 
alert(list_child[i].tagName); 
} 
</script> 
</body> 
</html>

推荐如下方法:
<!DOCTYPE HTML> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>Dom</title> 
</head> 
<body> 
<h2>运行该代码以后.你会发现在IE,FF,Chrome里返回的结果一样了.</h2> 
<ol id="list"> 
<li>html</li> 
<li>css</li> 
<li>dom</li> 
</ol> 
<script> 
for(var x=0,list_li = document.getElementById('list').childNodes; x<list_li.length; x++){ 
if(list_li[x].nodeType == 1){ 
alert(list_li[x].tagName); 
} 
} 
</script> 
</body> 
</html>
Javascript 相关文章推荐
javascript 操作文件 实现方法小结
Jul 02 Javascript
JavaScript 在网页上单击鼠标的地方显示层及关闭层
Dec 30 Javascript
让复选框只能选择一项的方法
Oct 08 Javascript
js实现选中复选框文字变色的方法
Aug 14 Javascript
基于原生js淡入淡出函数封装(兼容IE)
Oct 20 Javascript
使用base64对图片的二进制进行编码并用ajax进行显示
Jan 03 Javascript
浅谈基于Vue.js的移动组件库cube-ui
Dec 20 Javascript
Vant的安装和配合引入Vue.js项目里的方法步骤
Dec 05 Javascript
JS中使用new Option()实现时间联动效果
Dec 10 Javascript
vue 项目 iOS WKWebView 加载
Apr 17 Javascript
为vue项目自动设置请求状态的配置方法
Jun 09 Javascript
Vue中rem与postcss-pxtorem的应用详解
Nov 20 Javascript
js获取图片大小的函数代码
Sep 20 #Javascript
javascript中的注释使用与注意事项小结
Sep 20 #Javascript
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
Sep 20 #Javascript
JavaScript高级程序设计 学习笔记 js高级技巧
Sep 20 #Javascript
跨浏览器通用、可重用的选项卡tab切换js代码
Sep 20 #Javascript
JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题需要注意的地方
Sep 20 #Javascript
简单的jquery拖拽排序效果实现代码
Sep 20 #Javascript
You might like
PHP中GET变量的使用
2006/10/09 PHP
jquery 可排列的表实现代码
2009/11/13 Javascript
获得所有表单值的JQuery实现代码[IE暂不支持]
2012/05/24 Javascript
JQuery筛选器全系列介绍
2013/08/27 Javascript
JS 数字转换研究总结
2013/12/26 Javascript
一个很有趣3D球状标签云兼容IE8
2014/08/22 Javascript
使用jQuery获取data-的自定义属性
2015/11/10 Javascript
使用Javascript监控前端相关数据的代码
2016/10/27 Javascript
详解AngularJS 模块化
2017/06/14 Javascript
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
koa源码中promise的解读
2018/11/13 Javascript
Angular请求防抖处理第一次请求失效问题
2019/05/17 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
2019/12/01 Javascript
jQuery实现视频展示效果
2020/05/30 jQuery
原生JS实现九宫格抽奖
2020/09/13 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
2020/10/31 Javascript
[49:02]KG vs Infamous 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
python利用OpenCV2实现人脸检测
2020/04/16 Python
python opencv之SIFT算法示例
2018/02/24 Python
Python GUI布局尺寸适配方法
2018/10/11 Python
基于python 等频分箱qcut问题的解决
2020/03/03 Python
Matplotlib.pyplot 三维绘图的实现示例
2020/07/28 Python
Python接收手机短信的代码整理
2020/08/02 Python
Python使用内置函数setattr设置对象的属性值
2020/10/16 Python
提供世界各地便宜的机票:Sky-tours
2016/07/21 全球购物
匈牙利最大的健身制造商和销售商:inSPORTline
2018/10/30 全球购物
竞聘副主任科员演讲稿
2014/01/11 职场文书
电信营业员自我评价分享
2014/01/17 职场文书
酒店秘书求职信范文
2014/02/17 职场文书
基层干部2014全国两会学习心得体会
2014/03/10 职场文书
银行贷款委托书范本
2014/10/11 职场文书
计算机实训报告总结
2014/11/05 职场文书
新郎父亲婚礼致辞
2015/07/27 职场文书
人民调解协议书
2016/03/21 职场文书
会议主持词通用版
2019/04/02 职场文书
go设置多个GOPATH的方式
2021/05/05 Golang