JavaScript操作DOM元素的childNodes和children区别


Posted in Javascript onApril 01, 2015

对于DOM元素,children是指DOM Object类型的子对象,不包括tag之间隐形存在的TextNode,而childNodes包括tag之间隐形存在的TextNode对象。

具体看一下针对children和childNodes在chrome环境下的测试:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
 <div id="div1" class="div">
 <span id="s1" class="sp" lang="zh-cn">
 </span>
 </div>
</body>
<script type="text/javascript">
 
 function test() {
 var o = document.getElementById("div1");
 var child = o.children;
 console.log("div1.children运行结果:");
 for(i = 0; i < child.length; i++){
   console.log(child[i].tagName);
  }
 
 console.log("");
 child = o.childNodes;
 console.log("div1.childNodes运行结果:");
 for(i = 0; i < child.length; i++){
   console.log(child[i].tagName);
  }
 
 }
 
 test();

</script>
</html>

测试结果如下:

div1.children运行结果:
 SPAN

 div1.childNodes运行结果:
 undefined
 SPAN
 undefined

上面childNodes集合的结果中有两个undefined节点,这连个就是nodeType=3的TextNode。

如果把HTML代码写成如下样式,那么children和childNodes的结果就没有差别了。

<body>
 <div id="div1" class="div"><span id="s1" class="sp" lang="zh-cn"></span></div>
</body>

对document、head、body及div等HTML元素实测未发现有其他差异

Javascript 相关文章推荐
js parsefloat parseint 转换函数
Jan 21 Javascript
js实现完美兼容各大浏览器的人民币大小写相互转换
Oct 29 Javascript
js获取元素下的第一级子元素的方法(推荐)
Mar 05 Javascript
ThinkPHP+jquery实现“加载更多”功能代码
Mar 11 Javascript
jQuery中table数据的值拷贝和拆分
Mar 19 Javascript
如何在AngularJs中调用第三方插件库
May 21 Javascript
Angular 2父子组件之间共享服务通信的实现
Jul 04 Javascript
JS文件中加载jquery.js的实例代码
May 05 jQuery
React.js绑定this的5种方法(小结)
Jun 05 Javascript
JS基于开关思想实现的数组去重功能【案例】
Feb 18 Javascript
vue使用openlayers实现移动点动画
Sep 24 Javascript
Vue实现点击当前行变色
Dec 14 Vue.js
JS使用oumousemove和oumouseout动态改变图片显示的方法
Mar 31 #Javascript
js使用onmousemove和onmouseout获取鼠标坐标的方法
Mar 31 #Javascript
JS显示下拉列表框内全部元素的方法
Mar 31 #Javascript
JS动态改变表格边框宽度的方法
Mar 31 #Javascript
60行js代码实现俄罗斯方块
Mar 31 #Javascript
JS动态修改表格cellPadding和cellSpacing的方法
Mar 31 #Javascript
js实现的牛顿摆效果
Mar 31 #Javascript
You might like
php面向对象全攻略 (十四) php5接口技术
2009/09/30 PHP
PHP 5.3新增魔术方法__invoke概述
2014/07/23 PHP
浅析Yii2 GridView实现下拉搜索教程
2016/04/22 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
2019/03/22 PHP
extjs 学习笔记(一) 一些基础知识
2009/10/13 Javascript
让JavaScript拥有类似Lambda表达式编程能力的方法
2010/09/12 Javascript
jquery提交form表单简单示例分享
2014/03/03 Javascript
浅析javascript操作 cookie对象
2014/12/26 Javascript
浅谈javascript 迭代方法
2015/01/21 Javascript
JS中改变this指向的方法(call和apply、bind)
2016/03/26 Javascript
浅谈jQuery中Ajax事件beforesend及各参数含义
2016/12/03 Javascript
Ajax 加载数据 练习代码
2017/01/05 Javascript
angularjs中ng-bind-html的用法总结
2017/05/23 Javascript
Angular中的interceptors拦截器
2017/06/25 Javascript
使用JavaScript实现链表的数据结构的代码
2017/08/02 Javascript
Javascript快速实现浏览器系统通知
2017/08/26 Javascript
使用Angular CLI从蓝本生成代码详解
2018/03/24 Javascript
Vue resource三种请求格式和万能测试地址
2018/09/26 Javascript
全面分析JavaScript 继承
2019/05/30 Javascript
Vue根据条件添加click事件的方式
2019/11/09 Javascript
node.js Promise对象的使用方法实例分析
2019/12/26 Javascript
JavaScript实现PC端横向轮播图
2020/02/07 Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
2020/04/07 Javascript
python中使用enumerate函数遍历元素实例
2014/06/16 Python
Python合并字典键值并去除重复元素的实例
2016/12/18 Python
Python读取excel指定列生成指定sql脚本的方法
2018/11/28 Python
python之生产者消费者模型实现详解
2019/07/27 Python
Python GUI学习之登录系统界面篇
2019/08/21 Python
Anaconda+vscode+pytorch环境搭建过程详解
2020/05/25 Python
CSS3利用text-shadow属性实现多种效果的文字样式展现方法
2016/08/25 HTML / CSS
美国著名的婴儿学步鞋老品牌:Robeez
2016/08/20 全球购物
欧铁通票官方在线销售网站:Eurail.com
2017/10/14 全球购物
公司门卫管理制度
2014/02/01 职场文书
促销活动总结怎么写
2014/06/25 职场文书
大学生年度个人总结
2015/02/15 职场文书
居住证明范文
2015/06/17 职场文书