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 相关文章推荐
Mootools 1.2教程 设置和获取样式表属性
Sep 15 Javascript
有关于JS辅助函数inherit()的问题
Apr 07 Javascript
Js冒泡事件详解及阻止示例
Mar 21 Javascript
node.js中的fs.unlinkSync方法使用说明
Dec 15 Javascript
JS组件Bootstrap Select2使用方法详解
Apr 17 Javascript
常用原生JS兼容性写法汇总
Apr 27 Javascript
浅谈js中的in-for循环
Jun 28 Javascript
简单实现IONIC购物车功能
Jan 10 Javascript
JavaScript中的回调函数实例讲解
Jan 27 Javascript
vue中实现回车键登录功能
Feb 19 Javascript
基于vue实现简易打地鼠游戏
Aug 21 Javascript
教你一步步实现一个简易promise
Nov 02 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实现的美国50个州选择列表实例
2015/04/20 PHP
如何用PHP做到页面注册审核
2017/03/02 PHP
使用PHPExcel实现数据批量导出为excel表格的方法(必看)
2017/06/09 PHP
PHP使用XMLWriter读写xml文件操作详解
2018/07/31 PHP
js通过元素class名字获取元素集合的具体实现
2014/01/06 Javascript
利用jquery操作Radio方法小结
2014/10/20 Javascript
jQuery判断一个元素是否可见的方法
2015/06/05 Javascript
js为什么不能正确处理小数运算?
2015/12/29 Javascript
jQuery使用animate实现ul列表项相互飘动效果示例
2016/09/16 Javascript
基于JavaScript实现自动更新倒计时效果
2016/12/19 Javascript
几行js代码实现自适应
2017/02/24 Javascript
详解Node.js中exports和module.exports的区别
2017/04/19 Javascript
vue打包的时候自动将px转成rem的操作方法
2018/06/20 Javascript
判断“命令按钮”是否被鼠标单击详解
2019/07/31 Javascript
Element Collapse 折叠面板的使用方法
2020/07/26 Javascript
vue穿梭框实现上下移动
2021/01/29 Vue.js
Python高效编程技巧
2013/01/07 Python
Python基础学习之常见的内建函数整理
2017/09/06 Python
python中map()函数的使用方法示例
2017/09/29 Python
VTK与Python实现机械臂三维模型可视化详解
2017/12/13 Python
Selenium定时刷新网页的实现代码
2018/10/31 Python
python爬取微信公众号文章的方法
2019/02/26 Python
超实用的 30 段 Python 案例
2019/10/10 Python
Django通用类视图实现忘记密码重置密码功能示例
2019/12/17 Python
基于pytorch的lstm参数使用详解
2020/01/14 Python
PyQt5+python3+pycharm开发环境配置教程
2020/03/24 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
2020/04/08 Python
瑞士网球商店:Tennis-Point
2020/03/12 全球购物
给老师的检讨书
2014/02/11 职场文书
内刊编辑求职自荐书范文
2014/02/19 职场文书
幼儿园大班家长评语
2014/04/17 职场文书
机械电子工程专业求职信
2014/06/22 职场文书
2015年司机年终工作总结
2015/05/14 职场文书
2015年出纳工作总结与计划
2015/05/18 职场文书
单位收入证明范本
2015/06/18 职场文书