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中的setTime()方法的使用
Jun 11 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
Sep 16 Javascript
jQuery实现折叠、展开的菜单组效果代码
Sep 16 Javascript
AngularJS 工作原理详解
Aug 18 Javascript
微信小程序  checkbox组件详解及简单实例
Jan 10 Javascript
JavaScript 保护变量不被随意修改的实现代码
Sep 27 Javascript
vue-cli项目中使用Mockjs详解
May 14 Javascript
Vue导出页面为PDF格式的实现思路
Jul 31 Javascript
详解Vue改变数组中对象的属性不重新渲染View的解决方案
Sep 21 Javascript
layui实现根据table数据判断按钮显示情况的方法
Sep 26 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
Aug 14 Javascript
微信小程序实现选项卡滑动切换
Oct 22 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对字符串的递增运算分析
2010/08/08 PHP
深入PHP中的HashTable结构详解
2013/06/13 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
PHP使用mysqli同时执行多条sql查询语句的实例
2019/03/22 PHP
jqPlot jquery的页面图表绘制工具
2009/07/25 Javascript
JavaScript中各种引用类型的常用操作方法小结
2016/05/05 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
2016/08/17 Javascript
JS实现图片点击后出现模态框效果
2017/05/03 Javascript
基于Particles.js制作超炫粒子动态背景效果(仿知乎)
2017/09/13 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
2017/11/03 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
2018/04/27 Javascript
node.js到底要不要加分号浅析
2018/07/11 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
2019/05/14 Javascript
vue-父子组件和ref实例详解
2019/11/10 Javascript
Vue组件化开发之通用型弹出框的实现
2020/02/28 Javascript
JS实现炫酷雪花飘落效果
2020/08/19 Javascript
javascript实现点击小图显示大图
2020/11/29 Javascript
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
Python中Iterator迭代器的使用杂谈
2016/06/20 Python
Python实现的多线程http压力测试代码
2017/02/08 Python
判断python字典中key是否存在的两种方法
2018/08/10 Python
django的settings中设置中文支持的实现
2019/04/28 Python
Python寻找路径和查找文件路径的示例
2019/07/10 Python
HTML5 Canvas图像模糊完美解决办法
2018/02/06 HTML / CSS
HTML5中Canvas与SVG的画图原理比较
2013/01/16 HTML / CSS
西班牙第一的网上药房:PromoFarma.com
2017/04/17 全球购物
巴西在线鞋店:Shoestock
2017/10/28 全球购物
中国茶叶、茶具一站式网上购物商城:醉品茶城
2018/07/03 全球购物
Myprotein俄罗斯官网:欧洲第一运动营养品牌
2019/05/05 全球购物
销售团队获奖感言
2014/08/14 职场文书
公司员工体检通知
2015/04/21 职场文书
毕业论文致谢部分怎么写
2015/05/14 职场文书
小学语文的各类谚语(70首)
2019/08/15 职场文书
如何利用STAR法则制作留学文书?
2019/08/26 职场文书
Python列表删除重复元素与图像相似度判断及删除实例代码
2021/05/07 Python
Python MNIST手写体识别详解与试练
2021/11/07 Python