- 浏览: 51436 次
- 性别:
- 来自: 株洲
文章分类
最新评论
节点类型(来自李炎恢的讲课稿件)
DOM定义了Node的接口以及许多种节点类型来表示节点的多个方面!
- Document——最顶层的节点,所有的其他节点都是附属于它的。
- DocumentType——DTD引用(使用<!DOCTYPE >语法)的对象表现形式,例如<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" >。它不能包含子节点。
- DocumentFragment——可以像Document一样来保存其他节点。
- Element——表示起始标签和结束标签之间的内容,例如<tag ></tag >或者<tag / >。这是唯一可以同时包含特性和子节点的节点类型。
- Attr——代表一对特性名和特性值。这个节点类型不能包含子节点。
- Text——代表XML文档中的在起始标签和结束标签之间,或者CData Section内包含的普通文本。这个节点类型不能包含子节点。
- CDataSection——<![CDATA[ ]]>的对象表现形式。这个节点类型仅能包含文本节点Text作为子节点。
- Entity——表示在DTD中的一个实体定义,例如<!ENTITY foo "foo">。这个节点类型不能包含子节点。
- EntityReference——代表一个实体引用,例如"。这个节点类型不能包含子节点。
- ProcessingInstruction——代表一个PI(处理指令)。这个节点类型不能包含子节点。
- Comment——代表注释。这个节点类型不能包含子节点。
- Notation——代表在DTD中定义的记号。这个很少用到,所以我们不会讨论。
还定义了对应不同节点类型的12个常量.
- Node.ELEMENT_NODE (1)
- Node.ATTRIBUTE_NODE (2)
- Node.TEXT_NODE (3)
- Node.CDATA_SECTION_NODE (4)
- Node.ENTITY_REFERENCE_NODE (5)
- Node.ENTITY_NODE (6)
- Node.PROCESSING_INSTRUCTION_NODE (7)
- Node.COMMENT_NODE (8)
- Node.DOCUMENT_NODE (9)
- Node.DOCUMENT_TYPE_NODE (10)
- Node.DOCUMENT_FRAGMENT_NODE (11)
- Node.NOTATION_NODE (12)
节点类型常量都是Node对象的属性,但是IE不支持Node对象,但是仍可以使用数值
Node接口也定义了一些所有节点类型都包含的特性和方法。我们在下面的表格中列出了这些特性和方法:
特性/方法 | 类型/返回类型 | 说 明 |
nodeName | String | 节点的名字;根据节点的类型而定义,元素节点返回tagName,文本节点返回#text,属性节点返回属性名 |
nodeValue | String | 节点的值;根据节点的类型而定义.元素节点此属性为空,文本节点些属性即为节点中的字符串,属性节点返回属性值 |
nodeType | Number | 节点的类型常量值之一 |
ownerDocument | Document | 指向这个节点所属的文档 |
firstChild | Node | 指向在childNodes列表中的第一个节点 |
lastChild | Node | 指向在childNodes列表中的最后一个节点 |
childNodes | NodeList | 所有子节点的列表 |
previousSibling | Node | 指向前一个兄弟节点;如果这个节点就是第一个兄弟节点,那么该值为null |
nextSibling | Node | 指向后一个兄弟节点;如果这个节点就是最后一个兄弟节点,那么该值为null |
hasChildNodes() | Boolean | 当childNodes包含一个或多个节点时,返回真 |
attributes | NamedNodeMap | 包含了代表一个元素的特性的Attr对象;仅用于Element节点 |
appendChild(node) | Node | 将node添加到childNodes的末尾 |
removeChild(node) | Node | 从childNodes中删除node |
replaceChild (newnode,oldnode) | Node | 将childNodes中的oldnode替换成newnode |
insertBefore (newnode,refnode) | Node | 在childNodes中的refnode之前插入newnode |
除节点外,DOM还定义了一些助手对象,它们可以和节点一起使用,但不是DOM文档必有的部分。
- NodeList——节点数组,按照数值进行索引;用来表示一个元素的子节点。比如childNodes。NodeList有个length属性表示节点数量
- NamedNodeMap——同时用数值和名字进行索引的节点表;用于表示元素特性。比如元素的attributes。NamedNodeMap对象也有一个length属性来指示它所包含的节点的数量。
这些助手对象为处理DOM文档提供附加的访问和遍历方法。
属性节点
正如前面提到的,即便Node接口已具有attributes方法,且已被所有类型的节点继承,然而,只有Element节点才能有特性。Element节点的attributes属性其实是NamedNodeMap,它提供一些用于访问和处理其内容的方法:
- getNamedItem(name)——返回nodeName属性值等于name的节点;
- removeNamedItem(name)——删除nodeName属性值等于name的节点;
- setNamedItem(node)——将node添加到列表中,按其nodeName属性进行索引;
- item(pos)——像NodeList一样,返回在位置pos的节点;
请记住这些方法都是返回一个Attr节点,而非特性值。
当NamedNodeMap用于表示特性时,其中每个节点都是Attr节点,它的nodeName属性被设置为特性名称,而nodeValue属性被设置为特性的值。示例:
<p id="p1" style="background-color:red;" title="P!!!">Some Text!</p> var p1 = document.getElementById("p1"); //访问ID属性 alert(p1.attributes.getNamedItem("id")).nodeValue; //也可以用数值来访问ID属性 alert(p1.attributes.item(0)).nodeValue; //也可以改变它的值 p1.attributes.getNamedItem("id").nodeValue = "newP1";
Attr节点也有一个完全等同于(同时也完全同步于)nodeValue属性的value属性,并且有name属性和nodeName属性保持同步。我们可以随意使用这些属性来修改或变更特性。但这些方法都比较复杂,所以DOM又定义了三个元素方法来帮助访问特性:
- getAttribute(name)——等于attributes.getNamedItem(name).value
- setAttribute(name, newValue)——等于attribute.getNamedItem(name).value = newValue
- removeAttribute(name)——等于attributes.removeNamedItem(name)
NodeList
事实上我们早接触过NodeList了
var allTags = document.getElementsByTagName("*"); alert(allTags.item(1).tagName);//访问了第二个元素 alert(allTags[0]);//在JavaScript可以这样访问第一个元素,
但这只能是JavaScript里正常运行
getElementsByTagName与getElementsByName都返回NodeList,可以使用item(index)方法访问其中的内容,在JavaScript中还可使用数组形式的下标访问!
创建和操纵节点
迄今为止,已经学过了如何访问文档中的不同节点,不过这仅仅是使用DOM所能实现的功能中的很小一部分。还能添加、删除、替换(或者其他操作)DOM文档中的节点。正是这些功能使得DOM具有真正意义上的动态性。
创建新节点
DOM Document(文档)中有一些方法用于创建不同类型的节点,即便在所有的浏览器中的浏览器document对象并不需要全部支持所有的方法。下面的表格列出了包含在DOM Level 1中的方法,并列出不同的浏览器是否支持项。
方 法 | 描 述 | IE | MOZ | OP | SAF |
createAttribute (name) | 用给定名称name创建特性节点 | × | × | × | - |
createCDATASection (text) | 用包含文本text的文本子节点创建一个CDATA Section | - | × | - | - |
createComment(text) | 创建包含文本text的注释节点 | × | × | × | × |
createDocumentFragment() | 创建文档碎片节点 | × | × | × | × |
createElement (tagname) | 创建标签名为tagname的元素 | × | × | × | × |
createEntity Reference(name) | 创建给定名称的实体引用节点 | - | × | - | - |
createProcessing Instruction(target, data) | 创建包含给定target和data的PI节点 | - | × | - | - |
createTextNode(text) | 创建包含文本text的文本节点 | × | × | × | × |
注:IE = Windows的IE 6;MOZ = 任意平台的Mozilla 1.5;OP=任意平台的Opera 7.5;SAF=MacOS的Safari 1.2
最常用到的几个方法是:createDocumentFragment()、createElement()和createText- Node();其他的一些方法要么就是没什么用(createComment()),要么就是浏览器的支持不够,目前还不太能用。
动态创建一个段落示例
var p = document.createElement("p");//创建一个元素节点,传入标签名 var txt = document.createTextNode("创建文本节点,传参数即是文本内容"); p.appendChild(txt);//将txt所引用的文本节点插入p到p的最后面(在这里p是空的) //直到现在,页面不会出现任何内容,必须将创建的节点插入到文档中 document.body.appendChild(p);//p将出现在最后
移动,删除节点方法及注意事项——appendChild,removeChild,replaceChild,insertBefore
var p1 = document.getElementById("p1"); document.body.appendChild(p1);//p1将会被作为body的最后一个子节点,然而页面上仍只有一个p p1.parentNode.removeChild(p1);//removeChild必须是要删除的节点的父节点调用 //p1将会从页面上消失,然而它并没有完全消失,我们还可以再将其插入文档 document.body.appendChild(p1);//因为变量p1包含了节点的引用 var p2 = document.getElementById("p2"); p2.parentNode.replaceChild(p1,p2);//p2将会被替换成p1,p2将消失 //而p1将从原来的位置移到p2的位置
克隆节点——cloneNode
基于上面的原因,DOM为我们提供了一个克隆节点的方法用于生成一个节点的副本
var p1 = document.getElementById("p1"); var p2 = p1.cloneNode(); document.body.appendChild(p2);//页面上将会多出一个段落,不过段
落中什么都没有 p2 = p1.cloneNode(true);//使用参数true表示克隆节点时包含子节点 document.body.appendChild(p2);
- 2.DOM基础.rar (3.9 KB)
- 下载次数: 3
发表评论
-
javascirpt对象创建
2015-08-26 21:21 504javascript中的面向对象 理解js中的对象 最 ... -
react的学习总结
2015-06-10 11:51 1959React介绍(具体总结请参考附件chm,本文的chm版 ... -
抽取jquery源码实现获取元素的精确位置
2014-10-18 11:32 413获取元素准确位置的写法 知识点预备:getBounding ... -
jquery实现弹窗居中的简单效果
2014-10-18 09:24 968<!DOCTYPE html PUBLIC &quo ... -
javascript 基础知识零散汇总
2014-09-29 15:09 3741:数据类型判断 基础类型判断 Object.prot ... -
jquery jsonp参数编码问题不一致问题的解决方案
2014-09-27 23:06 6767<!doctype html> <ht ... -
javascript源对象于对象引用之前不得不说的事情
2014-09-13 17:05 374var source = {"a":3 ... -
sEMMET插件的最全快捷方式【来自Dash文档中心】
2014-09-11 10:44 555s -
仿淘宝放大镜效果
2014-09-11 00:31 428/* *知识点预备 clientX,clientY ... -
js--简单放大镜实现(带移动方块)
2014-09-11 00:22 735/* *知识点预备 clientX,clientY ... -
js+css自定义滚动条(包含滚动事件处理)
2014-08-31 12:11 560<!DOCTYPE html> <htm ... -
div+css(javascript)自定义滚动条
2014-08-31 10:07 320<!DOCTYPE html> <ht ... -
javascript--闭包彻底弄清楚
2014-08-27 10:09 377<!DOCTYPE html> ... -
JavaScript 闭包再探讨
2014-08-27 10:03 0<!DOCTYPE html> <htm ... -
JavaScript 闭包再探讨
2014-08-27 10:03 402<!DOCTYPE html> <htm ... -
javascript位置相关(一)---offset等测试
2014-08-17 21:19 479元素的offsetParent属性 : 只读 属性 离当前 ... -
javascript位置相关(二)--getBoundingClientRect
2014-08-17 21:17 601http://msdn.microsoft.com/en- ... -
setTimeout 使用
2014-08-17 18:22 411开门见山:众所周知,setTimeout ... -
setTimeout 0 使用
2014-08-17 18:03 430经常看到setTimeout延 ... -
前端知识点分享3--DOM操作
2014-07-28 22:27 525首先先要知道我们必须 ...
相关推荐
《Zookeeper节点类型与Java客户端创建ZNode详解》 Zookeeper是Apache软件基金会的一个开源项目,它是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是集群的管理者,监视着...
在Elasticsearch中,节点的类型主要有4种: master节点: 配置文件中node.master属性为true(默认为true),就有资格被选为master节点。 master节点用于控制整个集群的操作。比如创建或删除索引,管理其它非master...
节点类型决定了它们在会话失效、数据持久化以及顺序编号等方面的行为。 1. 持久节点(PERSISTENT) 持久节点是在 ZooKeeper 中创建的最基础的节点类型。一旦创建,除非显式地删除,否则它们将持续存在。即使创建...
DOM Node接口是DOM中的核心部分,它定义了所有节点类型共有的属性、方法和事件。无论你是处理元素节点、属性节点、文本节点还是其他类型的节点,Node接口都是基础。以下将详细阐述DOM Node接口的关键知识点。 1. **...
ZooKeeper的节点类型提供了灵活的数据存储和处理方式,适用于各种分布式应用场景。通过理解不同节点类型的特点和应用场景,我们可以更好地设计和实现分布式系统。本文通过代码示例展示了如何在Java中操作ZooKeeper的...
2. 不同节点类型 - PQ节点:代表负荷节点,其有功和无功功率为已知。 - PV节点:代表发电机或带有电压调节器的节点,其电压幅值和有功功率为已知。 - 平衡节点(Slack Bus):网络中的参考节点,电压幅值和相位...
节点类型的常数值从1到12,分别对应不同类型的节点。 1. 元素节点(Node.ELEMENT_NODE):元素节点对应于网页中的HTML标签,例如body、div等。元素节点的nodeType值为1,nodeName返回大写的标签名,nodeValue通常为...
学习XPath的基础知识,包括数据类型、节点类型以及节点匹配方法,对于处理XML文档至关重要。 首先,XPath定义了四种基本数据类型,这些类型是XPath语言的核心,并且在XML数据处理中发挥着重要的作用: 1. 节点集...
很完整的,希望能够对大家有帮助。初来咋到,望多多照顾,以后会学会csdn使用,分享更多资源的!
znode 可以分为四种类型: 1. PERSISTENT(持久化节点):即使客户端断开连接,该节点也会继续存在,直到被手动删除。 2. PERSISTENT_SEQUENTIAL(持久化顺序节点):同样在断开连接后仍然存在,但Zookeeper会为...
这个属性返回一个整数值,每个值对应于特定的节点类型,这使得开发者能够轻松地识别和处理不同类型的节点。 1. **Element节点** (节点编号1): `nodeType`值为1时,表示该节点是元素节点,如`<div>`、`<p>`等。元素...
在Drupal中,不同类型的节点(Node)可以对应不同的内容模型,因此在设计网站时,可能会需要为每个节点类型提供独特的展示样式,这就涉及到了Drupal的主题模板机制。 Drupal的主题引擎允许开发者通过模板文件来控制...
在JavaScript编程中,获取当前页面出现最多的节点类型是一项常见的任务,尤其在数据分析、网页解析或者优化性能时非常有用。这个任务通常涉及到DOM操作和数据统计。让我们深入探讨一下如何使用JavaScript来实现这一...
在JavaScript的世界里,"nodes:Substance.Article实现的公共节点类型"这个标题涉及到的是一个名为Substance的开源富文本编辑框架。Substance是用于构建可扩展的、基于Web的文档应用的一个强大工具,它允许开发者创建...
文件中提到的“版本18.532节点类型名称chopNodeTypeCategory节点数量148”表明,在Houdini的第18.532版本中,Chop节点类型有148种。类似的,其他节点类型,如chopNet、cop2、cop2Net、dop、lop、obj、shop、sop、top...
Neos CMS的动态节点类型管理器 该软件包允许您通过Neos CMS中的后端模块设置动态节点类型。 安装 使用composer安装shel/dynamicnodes : composer require shel/dynamicnodes 存在对Neos 1.2。*和Neos 2.0。*支持的...
Neos.NodeType.CodeMirror 允许在 TYPO3 Neos 中使用 codeMirror 样式代码片段的节点类型将此添加到您的 composer.json 以启用代码片段节点类型: { "repositories": [ { "type": "git", "url": ...