核心Node对象##

由于继承扩展的关系,DOM中大部分对象会有Node对象的属性和方法,其中包括:

  • nodeName

DOM2核心中规定的每种nodeType预期的nodeName值

对象 返回值
Element.nodeName 元素的名称,大写
Attr.nodeName 属性的名称,大写
Text.nodeName #text
CDATASection.nodeName #cdata-section
EntityReference.nodeName 实体引用的名称
Entity.nodeName 实体的名称
ProcessingInstruction.nodeName 目标的名称
Comment.nodeName #comment
Document.nodeName #document
DocumentType.nodeName 文档类型的名称,如HTML
DocumentFragment.nodeName #document fragment
Notation.nodeName 表示法的名称
  • nodeValue

要注意的是不是所有的DOM对象都是有意义的

对象 返回值
Element.nodeName null
Attr.nodeName 字符串形式的属性值
Text.nodeName 字符串形式的节点内容
CDATASection.nodeName 字符串形式的节点内容
EntityReference.nodeName null
Entity.nodeName null
ProcessingInstruction.nodeName 字符串形式的节点内容
Comment.nodeName 字符串形式的注释文本
Document.nodeName null
DocumentType.nodeName null
DocumentFragment.nodeName null
Notation.nodeName null
  • nodeType
等价命名常量 nodeType值
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

注意在判断nodeType的时候,应该用浏览器中具体的等价常理; 当然,在某些不支持的浏览器中,也可以直接用自己定义的方式比较

if(node.nodeType == Node.ELEMENT_NODE) { }
  • parentNode/childNodes

树形结构中,每个Node对象都有许多预定义的属性,分别引用树中的其它相关节点。这些属性除了childNodes引用的是包含DOM对象的NodeList类数组对象(所以可以用item方法获取索引),其它的都引用一个实际的DOM对象。

  • firstChild/lastChild (一般情况下,这两个节点都应该会是Text节点)

  • previousSibling/nextSibling(如果没有的话,返回null)

节点的属性###

节点属性也扩展自Node对象,但是它不是包含在通常表示父子关系的树形结构中;作为Attr对象的实例,节点属性被包含在相应节点的attributes成员的一个NamedNodeMap对象中

DOM2中,attributes是Node接口定义的属性,其还实现了Attr和NameNodeMap接口;事实上其包含的是一个节点的所有属性的集合 node.attributes

  • item, 也可以用次方法获取索引(NameNodeMap对象中的方法)

  • getNamedItem 根据具体的属性名来获取属性 (NameNodeMap对象中的方法)(getNamedItem()方法与Element对象的getAttribute()方法类似,不过attributes.getNamedItem()方法在任何节点上都有效,也包括那些不是Element对象的节点。)

  • 获取的属性的属性,nodeName/nodeType/nodeValue(现在改为value)

  • ownerDocument

节点的ownerDocument属性是指向节点所属的根文档的引用。大多数情况下,都可以通过它在作用域中引用document,或者window.document,因为在浏览器中只会有一个document的实例。

  • hasChildNodes()/hasAttributes() 检查某个节点是否具有子节点或属性 (而获取它们的个数分别是childNodes.length/attributes.length)

操纵DOM节点树###

  • appendChild()/insertBefore(new, node)
  • replaceChild(new, old)/removeChild() ;注意它们是在父节点操作的;
  • 注意一般获取节点的操作都是直接获取引用,要向操作其副本,使用cloneNode();

DOM--3 DOM核心和DOM2 HTML(2)的更多相关文章

  1. 解密jQuery内核 DOM操作的核心函数domManip

    domManip是什么 dom即Dom元素,Manip是Manipulate的缩写,连在一起就是Dom操作的意思. .domManip()是jQuery DOM操作的核心函数 对封装的节点操作做了参数 ...

  2. Virtual DOM 虚拟DOM的理解(转)

    作者:戴嘉华 转载请注明出处并保留原文链接( #13 )和作者信息. 目录: 1 前言 2 对前端应用状态管理思考 3 Virtual DOM 算法 4 算法实现 4.1 步骤一:用JS对象模拟DOM ...

  3. React v16-alpha 从virtual dom 到 dom 源码简读

    一.物料准备 1.克隆react源码, github 地址:https://github.com/facebook/react.git 2.安装gulp 3.在react源码根目录下: $npm in ...

  4. 什么是DOM,DOM level 1\2\3 的区别是什么

    DOM 文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口.Document Object Model的历史可以追溯至1990年 ...

  5. -_-#【Dom Ready / Dom Load】

    Dom Ready和Dom Load DOM Ready 详解 javascript的domReady 域名解析 - 加载html - 加载js和css - Dom Ready - 加载图片等其他信息 ...

  6. js 字符串转dom 和dom 转字符串

    js 字符串转dom 和dom 转字符串 博客分类: JavaScript   前言: 在javascript里面动态创建标准dom对象一般使用: var obj = document.createE ...

  7. javascript DOM和DOM操作的四种基本方法

    在了解了javascript的语言特性后,javascript真正大放光彩的地方来了——这就是javascript DOM Javascript DOM DOM(Document Object Mod ...

  8. 精讲 org.w3c.dom(java dom)解析XML文档

    org.w3c.dom(java dom)解析XML文档 位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效果可能会 ...

  9. 虚拟DOM Vitural DOM Tree

      提起Virtual DOM,总是给人一种高深莫测的感觉,大家都知道它比DOM快.那么Virtual DOM到底是何方神圣呢?在深入理解Virtual DOM之前,先让我们回顾一下DOM. 一.什么 ...

  10. DOM & Shadow DOM & Virtual DOM

    DOM & Shadow DOM & Virtual DOM What is the difference between Shadow DOM and Virtual DOM? ht ...

随机推荐

  1. 让view 覆盖导航栏

    当我们想做一个弹出式菜单时,想将导航栏也一起盖住不显示的话,可以用如下语句实现: UIView* myView = /* 你自定义的view */; UIWindow* currentWindow = ...

  2. js正则匹配以固定格式结尾的字符串并匹配是手机访问,则跳转

    <script> //var pcUrl = "http://res.meadin.com/HotelData/98986_1.shtml"; var pcUrl = ...

  3. Spring面向切面编程(AOP)方式二

    使用注解进行实现:减少xml文件的配置. 1 建立切面类 不需要实现任何特定接口,按照需要自己定义通知. package org.guangsoft.utils; import java.util.D ...

  4. osg四元数设置roll pitch heading角度

    roll绕Y轴旋转 pitch绕X轴旋转 heading绕Z轴旋转 单位是弧度,可以使用osg::inDegrees(45)将45角度转换为弧度 定义一个四元数 osg::Quat q( roll,o ...

  5. ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(十) 之 自定义系统消息和总结

    前言 本篇主要讲解一个东西,就是我们自定义系统消息.效果如下: 首先我们要做的准备工作就是改写 layim 的消息模板,如果不改的话就成为某个用户发送的消息了,那么体验就稍微差一些.找到模板我们看一下 ...

  6. oracle dataguard (一)

    一.什么是data guard及data guard的工作原理 Data Guard 是一个集合,由一个primary数据库(生产数据库)及一个或多个standby数据库(最多9个)组成.组成Data ...

  7. ajaxFileUpload上传文件没反应

    调用jquery的ajaxFileUpload异步上传文件,IE浏览器不进入success问题 原因:json转换异常,ie浏览器处理后的返回json没有<pre>标签,直接是完整的jso ...

  8. 5.1 stack,queue以及priority_queue

    *:stack 使用要包含头文件stack,栈是一种先进后出的元素序列,删除和访问只能对栈顶的元素(最后一个添加的元素)进行,并且添加元素只能添加到栈顶.栈内的元素不能访问,要想访问先要删除其上方的所 ...

  9. JAVA作业02

    一,      课堂练习 (一)构造方法 1,源代码 public class Test{ public static void main(String[] args){ Foo obj1=new F ...

  10. eclipse中的任务标记(TODO、FIXME、XXX)

    eclipse Task Tags: TODO -用来提醒该标识处的代码有待返回继续编写.更新或者添加.该标签通常在注释块的源文件顶部. FIXME -该标签用来提醒你代码中存在稍后某个时间需要修改的 ...