由于DOM是树形结构,所以一个节点被抽象为对象Node,这是DOM的核心对象。Node的种类一共有12种,通过Node.nodeType的取值来确定(为1-12)。
51CTO推荐阅读:JavaScript DOM的本质及操作方法
以下是Node的种类:
- Node.ELEMENT_NODE (1)
- Node.ATTRIBUTE_NODE (2)
- Node.TEXT_NODE (3) //<![CDATA[ ]]>中括着的纯文本,它没有子节点
- Node.CDATA_SECTION_NODE (4) //子节点一定为TextNode
- Node.ENTITY_REFERENCE_NODE (5)
- Node.ENTITY_NODE (6) //DTD中的实体定义<!ENTITY foo “foo”>,无子节点
- Node.PROCESSING_INSTRUCTION_NODE (7) //PI,无子节点
- Node.COMMENT_NODE (8)
- Node.DOCUMENT_NODE (9) //最外层的Root element,包括所有其它节点
- Node.DOCUMENT_TYPE_NODE (10) //DTD,<!DOCTYPE………..>
- Node.DOCUMENT_FRAGMENT_NODE (11)
- Node.NOTATION_NODE (12) //DTD中的Nation定义
- Node.ELEMENT_NODE (1)
- Node.ATTRIBUTE_NODE (2)
- Node.TEXT_NODE (3) //<![CDATA[ ]]>中括着的纯文本,它没有子节点
- Node.CDATA_SECTION_NODE (4) //子节点一定为TextNode
- Node.ENTITY_REFERENCE_NODE (5)
- Node.ENTITY_NODE (6) //DTD中的实体定义<!ENTITY foo “foo”>,无子节点
- Node.PROCESSING_INSTRUCTION_NODE (7) //PI,无子节点
- Node.COMMENT_NODE (8)
- Node.DOCUMENT_NODE (9) //最外层的Root element,包括所有其它节点
- Node.DOCUMENT_TYPE_NODE (10) //DTD,<!DOCTYPE………..>
- Node.DOCUMENT_FRAGMENT_NODE (11)
- Node.NOTATION_NODE (12) //DTD中的Nation定义
Node接口包含的特性/方法
◆nodeName属性将返回一个字符串,其内容是给定节点的名字。如果节点是元素节点,返回这个元素的名称;如果是属性节点,返回这个属性的名称;如果是文本节点,返回一个内容为#text 的字符串;
广州网站建设,网站建设,广州网页设计,广州网站设计
◆nodeType 属性将返回一个整数,这个数值代表给定节点的类型;
◆nodeValue 属性将返回给定节点的当前值.如果节点是元素节点,返回null;如果是属性节点,返回这个属性的名称;如果是文本节点,返回文本节点的内容;
◆ownerDocument 指向这个节点所属的文档;
◆attributes 包哈勒代表一个元素的特性的Attr对象;仅用于Element节点;
◆childNodes 所有子节点的列表;
◆firstChild 指向在childNodes列表中的第一个节点;
◆lastChild 指向在childNodes列表中的最后一个节点;
◆nextSibling 指向后一个兄弟节点;如果这个节点就是最后一个兄弟节点,那么该值为null;
◆previousSibling 指向前一个兄弟节点;如果这个节点就是第一个兄弟节点,那么该值为null;
◆parentNode 返回一个给定节点的父节点;
◆hasChildNodes() 当childNodes包含一个或多个节点时,返回真;
◆appendChild(node) 将node添加到childNodes的末尾;
◆removeChild(node) 将node从childNodes中删除;
◆insertBefore(newnode refnode) 在childNodes中的refnode之前插入newnode。
- var container = document.getElementById("content");
- var message = document.getElementById("fineprint");
- var para = document.createElement("p");
- container.insertBefore(para,message);
- var container = document.getElementById("content");
- var message = document.getElementById("fineprint");
- var para = document.createElement("p");
- container.insertBefore(para,message);
- replaceChild(newnode,oldnode)将childNodes中的oldnode替换成newnode。
- var container = document.getElementById("content");
- var message = document.getElementById("fineprint");
- var para = document.createElement("p");
- container.replaceChild(para,message);
- var container = document.getElementById("content");
- var message = document.getElementById("fineprint");
- var para = document.createElement("p");
- container.replaceChild(para,message); ❑ 获得Node:
- /* 通过document对象 */
- var oHtml = document.documentElement;
- /* 得到<head />和<body /> */
- var oHead = oHtml.firstChild;
- var oBody = oHtml.lastChild;
- /* 可以用这种方式 */
- var oHead = oHtml.childNodes[0];
- var oBody = oHtml.childNodes[1];
- /* 也可以使用方法获取数组的索引值 */
- var oHead = oHtml.childNodes.item(0);
- var oBody = oHtml.childNodes.item(1);
- /* 使用document.body来得到<body /> */
- var oBody = document.body;
- /* 通过document对象 */
- var oHtml = document.documentElement;
- /* 得到<head />和<body /> */
- var oHead = oHtml.firstChild;
- var oBody = oHtml.lastChild;
- /* 可以用这种方式 */
- var oHead = oHtml.childNodes[0];
- var oBody = oHtml.childNodes[1];
- /* 也可以使用方法获取数组的索引值 */
- var oHead = oHtml.childNodes.item(0);
- var oBody = oHtml.childNodes.item(1);
- /* 使用document.body来得到<body /> */
- var oBody = document.body;❑ createElement(element)
创建一个指定标签名创建一个新的元素节点,返回值为指向新建元素节点的引用指针。
- eg) var para = document.createElement("p");
- document.body.appendChild(para);