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 相关文章推荐
捕获关闭窗口的脚本
Jan 10 Javascript
详解JavaScript的回调函数
Nov 20 Javascript
41个Web开发者必须收藏的JavaScript实用技巧
Jul 22 Javascript
JS实现显示带倒影的图片横排居中放大展示特效实例【测试可用】
Aug 23 Javascript
ES6学习教程之Map的常用方法总结
Aug 03 Javascript
jquery在vue脚手架中的使用方式示例
Aug 29 jQuery
3种vue路由传参的基本模式
Feb 22 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
Mar 28 jQuery
在vue-cli项目中使用bootstrap的方法示例
Apr 21 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
Oct 15 Javascript
微信小程序 自定义复选框实现代码实例
Sep 04 Javascript
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题
Oct 25 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中导出数据到excel时数字变为科学计数的解决方法
2013/02/03 PHP
简单解析PHP程序的运行流程
2016/06/23 PHP
Node.js(安装,启动,测试)
2014/06/09 Javascript
JavaScript中string对象
2015/06/12 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
2015/08/12 Javascript
JS操作XML实例总结(加载与解析XML文件、字符串)
2015/12/08 Javascript
jQuery+Pdo编写login登陆界面
2016/08/01 Javascript
jQuery自适应轮播图插件Swiper用法示例
2016/08/24 Javascript
vue自定义指令实现v-tap插件
2016/11/03 Javascript
jquery.form.js异步提交表单详解
2017/04/25 jQuery
JS ES6多行字符串与连接字符串的表示方法
2017/04/26 Javascript
vue.js移动端app实战1:初始配置详解
2017/07/24 Javascript
从零开始用webpack构建一个vue3.0项目工程的实现
2020/09/24 Javascript
原生js生成图片验证码
2020/10/11 Javascript
零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers
2014/11/05 Python
python中列表元素连接方法join用法实例
2015/04/07 Python
浅要分析Python程序与C程序的结合使用
2015/04/07 Python
在Django中同时使用多个配置文件的方法
2015/07/22 Python
Python利用Nagios增加微信报警通知的功能
2016/02/18 Python
深入理解NumPy简明教程---数组2
2016/12/17 Python
Pycharm之快速定位到某行快捷键的方法
2019/01/20 Python
Pyqt5 基本界面组件之inputDialog的使用
2019/06/25 Python
解决django-xadmin列表页filter关联对象搜索问题
2019/11/15 Python
Canon佳能美国官方商店:购买数码相机、数码单反相机、镜头和打印机
2016/11/15 全球购物
Answear匈牙利:来自全球200多个知名时尚品牌
2017/04/21 全球购物
剪彩仪式主持词
2014/03/19 职场文书
工业设计毕业生自荐信
2014/04/13 职场文书
一年级学生评语
2014/04/23 职场文书
项目建议书范文
2014/05/12 职场文书
竞选班长演讲稿400字
2014/08/22 职场文书
“三支一扶”支教教师思想汇报
2014/09/13 职场文书
2014五年级班主任工作总结
2014/12/05 职场文书
python字符串常规操作大全
2021/05/02 Python
在JavaScript中如何使用宏详解
2021/05/06 Javascript
redis三种高可用方式部署的实现
2021/05/11 Redis
将Python代码打包成.exe可执行文件的完整步骤
2021/05/12 Python