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下操作css的float属性的特殊写法
Aug 22 Javascript
JavaScript的document对象和window对象详解
Dec 30 Javascript
6款新颖的jQuery和CSS3进度条插件推荐
Mar 05 Javascript
JS 实现导航栏悬停效果(续2)
Sep 24 Javascript
客户端js性能优化小技巧整理
Nov 05 Javascript
css如何让浮动元素水平居中
Aug 07 Javascript
jQuery树形控件zTree使用小结
Aug 02 Javascript
vue移动端路由切换实例分析
May 14 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
Sep 27 Javascript
Vue分页插件的前后端配置与使用
Oct 09 Javascript
Centos7 安装Node.js10以上版本的方法步骤
Oct 15 Javascript
一篇文章让你搞懂JavaScript 原型和原型链
Nov 23 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
从一个不错的留言本弄的mysql数据库操作类
2007/09/02 PHP
php下过滤html代码的函数 提高程序安全性
2010/03/02 PHP
探讨:php中在foreach中使用foreach ($arr as &amp;$value) 这种类型的解释
2013/06/24 PHP
php cli换行示例
2014/04/22 PHP
PHP自带方法验证邮箱是否存在
2016/02/01 PHP
php自定义扩展名获取函数示例
2016/12/12 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
JQ获取动态加载的图片大小的正确方法分享
2013/11/08 Javascript
jQuery选择器之基本选择器与层次选择器
2015/03/03 Javascript
JavaScript制作简易的微信打飞机
2015/03/31 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
jQuery动画效果图片轮播特效
2016/01/12 Javascript
详解Sea.js中Module.exports和exports的区别
2017/02/12 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
2017/10/20 Javascript
一个小时快速搭建微信小程序的方法步骤
2019/04/15 Javascript
使用imba.io框架得到比 vue 快50倍的性能基准
2019/06/17 Javascript
微信小程序实现星星评分效果
2020/11/01 Javascript
python实现跨文件全局变量的方法
2014/07/07 Python
Python对象的深拷贝和浅拷贝详解
2014/08/25 Python
Python实现视频下载功能
2017/03/14 Python
树莓派+摄像头实现对移动物体的检测
2019/06/22 Python
python面向对象 反射原理解析
2019/08/12 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
将python文件打包exe独立运行程序方法详解
2020/02/12 Python
利用CSS3的特性改变文本选中时的颜色
2013/09/11 HTML / CSS
HTML5如何为形状图上颜色怎么绘制具有颜色和透明度的矩形
2014/06/23 HTML / CSS
Java里面如何把一个Array数组转换成Collection, List
2013/07/26 面试题
铭万公司.net面试题笔试题
2014/07/20 面试题
幼儿园门卫制度
2014/01/29 职场文书
幼儿园数学教学反思
2014/02/02 职场文书
模具毕业生推荐信
2014/02/15 职场文书
跟单业务员岗位职责
2014/03/08 职场文书
领导干部保密承诺书
2014/08/30 职场文书
公司授权委托书格式样本
2014/10/01 职场文书
JS轻量级函数式编程实现XDM三
2022/06/16 Javascript
使用CSS实现六边形的图片效果
2022/08/05 HTML / CSS