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 相关文章推荐
Web版彷 Visual Studio 2003 颜色选择器
Jan 09 Javascript
js 分栏效果实现代码
Aug 29 Javascript
javascript面向对象特性代码实例
Jun 12 Javascript
JavaScript的null和undefined区别示例介绍
Sep 15 Javascript
解决js下referer兼容各大浏览器的方法
Nov 03 Javascript
jQuery弹簧插件编写基础之“又见弹窗”
Dec 11 Javascript
Angularjs---项目搭建图文教程
Jul 08 Javascript
微信小程序倒计时功能实例代码
Jul 17 Javascript
vue项目中使用tinymce编辑器的步骤详解
Sep 11 Javascript
单页面vue引入百度统计的使用方法示例详解
Oct 13 Javascript
JavaScript私有变量实例详解
Jan 24 Javascript
微信小程序3D轮播实现代码
Sep 19 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类的使用 实例代码讲解
2009/12/28 PHP
ThinkPHP简单使用memcache缓存的方法
2016/11/15 PHP
javascript 贪吃蛇实现代码
2008/11/22 Javascript
js中单引号与双引号冲突问题解决方法
2013/10/04 Javascript
qq悬浮代码(兼容各个浏览器)
2014/01/29 Javascript
jQuery中not()方法用法实例
2015/01/06 Javascript
浅谈JavaScript中的string拥有方法的原因
2015/08/28 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
js实现商城星星评分的效果
2015/12/29 Javascript
举例说明JavaScript中的实例对象与原型对象
2016/03/11 Javascript
Bootstrap网格系统详解
2016/04/26 Javascript
angular.js分页代码的实例
2016/07/27 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
jQuery绑定事件的四种方式介绍
2016/10/31 Javascript
Bootstrap Table 在指定列中添加下拉框控件并获取所选值
2017/07/31 Javascript
利用jqprint插件打印页面内容的实现方法
2018/01/09 Javascript
jquery写出PC端轮播图实例
2018/01/26 jQuery
教你如何编写Vue.js的单元测试的方法
2018/10/17 Javascript
vue中选项卡点击切换且能滑动切换功能的实现代码
2018/11/25 Javascript
微信小程序入门之广告条实现方法示例
2018/12/05 Javascript
jQuery实现动态添加和删除input框代码实例
2019/03/29 jQuery
javascript实现手动点赞效果
2019/04/09 Javascript
使用JavaScript计算前一天和后一天的思路详解
2019/12/20 Javascript
React Hooks 实现和由来以及解决的问题详解
2020/01/17 Javascript
[01:08:33]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
深入讨论Python函数的参数的默认值所引发的问题的原因
2015/03/30 Python
Python实现Linux命令xxd -i功能
2016/03/06 Python
Python读取csv文件分隔符设置方法
2019/01/14 Python
安装2019Pycharm最新版本的教程详解
2019/10/22 Python
Python实现socket非阻塞通讯功能示例
2019/11/06 Python
scrapy处理python爬虫调度详解
2020/11/23 Python
CSS3制作Dropdown下拉菜单的方法
2015/07/18 HTML / CSS
高中历史教学反思
2014/02/08 职场文书
美国旅游签证工作证明
2014/10/14 职场文书
导游词范文
2015/02/13 职场文书
python OpenCV学习笔记
2021/03/31 Python