JavaScript中Element与Node的区别,children与childNodes的区别

关于Element跟Node的区别,cilldren跟childNodes的区别很多朋友弄不清楚,本文试图让大家明白这几个概念之间的区别。

Node(节点)是DOM层次结构中的任何类型的对象的通用名称,Node有很多类型,如元素节点,属性节点,文本节点,注释节点等,通过NodeType区分,常见的有:




















节点类型 NodeType
元素element 1
属性attr 2
文本text 3
注释comments 8
文档document 9

更多节点类型参考:https://developer.mozilla.org/en-US/docs/DOM/Node.nodeType?redirectlocale=en-US&redirectslug=nodeType

  Element继承了Node类,也就是说Element是Node多种类型中的一种,即当NodeType为1时Node即为ElementNode,另外Element扩展了Node,Element拥有id、class、children等属性。

  以上就是Element跟Node的区别。

那么用document.getElementById("xxx")取到的是Node还是Element呢?我们来测试一下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Demo</title>
</head>
<body>
<div id="test">
<p>One</p>
<P>Two</p>
</div>
<script>
var oDiv=document.getElementById("test");
console.log(oDiv instanceof Node); //true
console.log(oDiv instanceof Element); //true
</script>
</body>
</html>

我们可以看到用document.getElementById("xxx")取到的既是Element也是Node

  children是Element的属性,childNodes是Node的属性,我们再来测试一下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Demo</title>
</head>
<body>
<div id="test">
<p>One</p>
<P>Two</p>
</div>
<script>
var oDiv=document.getElementById("test");
console.log(oDiv.children[0] instanceof Node); //true
console.log(oDiv.children[0] instanceof Element); //true

console.log(oDiv.childNodes[0] instanceof Node); //true
console.log(oDiv.childNodes[0] instanceof Element); //false

console.log(typeof oDiv.childNodes[0].children); //undefined
console.log(typeof oDiv.childNodes[0].childNodes); //object
</script>
</body>
</html>

通过上面的代码我们可以看到,Element的children[0]仍为Element,是Node和Element的实例,Node的childNdoes[0]为Node,只是Node的实例,不是Element的实例。

  同时,Node的children属性为为undefined

JavaScript中Element与Node的区别,children与childNodes的区别,布布扣,bubuko.com

时间: 2024-08-02 02:50:33

JavaScript中Element与Node的区别,children与childNodes的区别的相关文章

JavaScript中的bind,call和apply函数的用法和区别

一直没怎么使用过JavaScript中的bind,call和apply, 今天看到一篇比较好的文章,觉得讲的比较透彻,所以记录和总结如下 首先要理解的第一个概念,JavaScript中函数调用的方式,总结下来,有以下4种 1. 方法调用 2. 正常函数调用 3. 构造器函数调用 4. apply/call 调用 要明白的第2个概念, JavaScript 中的函数,无论是上面哪种函数调用方式,除了你函数声明时定义的形参外,还会自动给函数添加两个形参,分别是this 和 arguments 要明白

javascript中的innerHTML,innerText,outerHTML的用法及其区别

示例html代码: <div id="test"> <span style="color:red">test1</span> test2 </div> 获得id为test的DOM对象,下面就不一一获取了. var test = document.getElementById('test'); test.innerHTML 描述:也就是从对象的起始位置到终止位置的全部内容,包括Html标签. 上例中的test.inner

javascript 中 void 0的含义及undefine于void 0区别

undefined是一个全局属性,表示未定义或定义了没有赋值. void是一个一元运算符,不管传入什么参数都会返回undefined.  void操作符是在ECMAScript v1中定义的,而undefined是在ECMAScript v5中定义的. 我们知道undefined不是javascript的保留字,所以我们可以用undefined作为变量名.这时,我们定义的 undefined就会影响到使用undefined作为判断的地方.看下面例子: 测试了主流浏览器IE7-IE11.opera

什么是JavaScript中的面向对象? 与其他编程语言的面向对象有什么区别? 什么是原型?

面向对象与原型模式 1.1. js的对象: 定义:是"无序属性的集合,其属性可以包含基本值,对象,和函数",没有类的概念(其他面向对象的语言都有类的概念) 面向对象思维:把解决问题的关注点放在解决问题的所需对象上. 1.2. 面向对象的三大特性: 1.2.1. 封装 就是讲一系列属性和方法,也就是功能 ,封装在对象里面,对象对外界暴露一些接口,外界在使用的时候,不需要关心对象内部的具体功能. 1.2.2. 继承 # 其他面向对象语言中的继承:有父子关系. # JS中的继承:自己没有的东

children 和childNodes 的区别

1:childNodes /children相同点:它返回指定元素的子元素集合. 2:区别:children :  它是非标准的,仅返回HTML节点.甚至不返回文本节点.所有浏览器表现一 致. childNodes :它是标准的,返回包括HTML节点,所有属性,文本.可以通过nodeType来判断是哪种类型的节点, 当nodeType==1是元素节       点,2是属性节点,3是文本节点. js操作document时,试图使用childNodes取得Div节点的Div子节点,IE浏览器中没有

children和childNodes的区别

1.childNodes 属性,标准的,它返回指定元素的子元素集合,包括HTML节点,所有属性,文本.可以通过nodeType来判断是哪种类型的节点,只有当nodeType==1时才是元素节点,2是属性节点,3是文本节点. 有些人错误的使用()去取该集合元素,下表列出各浏览器对childNodes(i)的支持情况:   IE6/7/8/Safari/Chrome/Opera IE9/Firefox childNodes(i) 支持 不支持 有时候需要获取指定元素的第一个HTML子节点(非属性/文

JavaScript中DOM的层次节点(一)

DOM是针对HTML和XML文档的一个API,描绘了一个层次化的节点树,允许开发人员添加.修改.删除节点的一部分. DOM将HTML和XML文档描绘成一个有多个节点构成的结构,节点分为12种不同的节点类型,每种都拥有自己的特点.数据和方法,并且和其他节点存在着某种关系. html元素称为文档元素,所有的元素都包含在文档元素中,并且每个文档只有一个html元素. 1 Node类型 DOM1级定义了Node接口,该接口由DOM中的所有节点类型实现.这个接口在JavaScript中是作为Node类型实

javascript中12种DOM节点类型概述

× 目录 [1]元素 [2]特性 [3]文本[4]CDATA[5]实体引用[6]实体名称[7]处理指令[8]注释[9]文档[10]文档类型[11]文档片段[12]DTD 前面的话 DOM是javascript操作网页的接口,全称为文档对象模型(Document Object Model).它的作用是将网页转为一个javascript对象,从而可以使用javascript对网页进行各种操作(比如增删内容).浏览器会根据DOM模型,将HTML文档解析成一系列的节点,再由这些节点组成一个树状结构.DO

JavaScript中的工厂方法、构造函数与class

JavaScript中的工厂方法.构造函数与class 本文转载自:众成翻译 译者:谢于中 链接:http://www.zcfy.cc/article/1129 原文:https://medium.com/javascript-scene/javascript-factory-functions-vs-constructor-functions-vs-classes-2f22ceddf33e#.wby148xu6 在ES6出现之前,人们常常疑惑JavaScript中的工厂模式和构造函数模式到底有