心得1--js加强dom介绍与node使用

1. DOM

DOM= Document Object Model,文档对象模型,DOM可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构。换句话说,这是表示和处理一个HTML或XML文档的常用方法。有一点很重要,DOM的设计是以对象管理组织(OMG)的规约为基础的,因此可以用于任何编程语言.

•       D:文档 – html 文档 或 xml 文档

•       O:对象 – document 对象的属性和方法

•       M:模型

•       DOM 是针对xml(html)的基于树的API。

•       DOM树:节点(node)的层次。

•       DOM 把一个文档表示为一棵家谱树(父,子,兄弟)

•       DOM定义了Node的接口以及许多种节点类型来表示XML节点的多个方面

2. DOM的结构

                               

  

3. 节点

l    根据 DOM,HTML文档中的每个成分都是一个节点。DOM 是这样规定的:(一切皆节点)

•       整个文档是一个文档节点

•       每个 HTML 标签是一个元素节点

•       包含在 HTML 元素中的文本是文本节点

•       每一个 HTML 属性是一个属性节点

•       注释属于注释节点

l     节点

   *  由结构图中我们可以看到,整个文档就是一个文档节点。

   *  而每一个HMTL标签都是一个元素节点

   *  标签中的文字则是文本节点

   *  标签的属性是属性节点

   * 一切都是节点……

l     节点树

     节点树的概念从图中一目了然,最上面的就是“树根”了。节点之间有父子关系,祖先与子孙关系,兄妹关系。这些关系从图中也很好看出来,直接连线的就是父子关系了。而有一个父亲的就是兄妹关系……

4. Node接口的特性和方法

特性/方法

类型/返回类型

说    明

nodeName

String

节点的名字;根据节点的类型而定义

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

5. 查找并访问节点

l    你可通过若干种方法来查找您希望操作的元素:

•      通过使用 getElementById() 和 getElementsByTagName() 方法

•      通过使用一个元素节点的 parentNode、firstChild 以及 lastChild 属性

l     getElementById()

     寻找一个有着给定 id 属性值的元素,返回值是一个有着给定 id 属性值的元素节点。如果不存在这样的元素,它返回 null.

var oElement = document.getElementById ( sID )该方法只能用于 document 对象

l    getElementsByName()

寻找有着给定name属性的所有元素,这个方法将返回一个节点集合,这个集合可以当作一个数组来处理。这个集合的length 属性等于当前文档里有着给定name属性的所有元素的总个数。

l     getElementsByTagName()

寻找有着给定标签名的所有元素,这个方法将返回一个节点集合,这个集合可以当作一个数组来处理。这个集合的length 属性等于当前文档里有着给定标签名的所有元素的总个数。

   var elements = document.getElementsByTagName(tagName);

   var elements =element.getElementsByTagName(tagName);

该方法不必非得用在整个文档上。它也可以用来在某个特定元素的子节点当中寻找有着给定标签名的元素

6. parentNode、firstChild以及lastChild

这三个属性可遵循文档的结构,在文档中进行“短距离的旅行”。请看下面这个 HTML 片段:

<table>

    <tr>

       <td>John</td>

       <td>Doe</td>

      <td>Alaska</td>

    </tr>

  </table>

在上面的HTML代码中,第一个 <td> 是 <tr> 元素的首个子元素(firstChild),而最后一个 <td> 是 <tr>元素的最后一个子元素(lastChild)。此外,<tr> 是每个 <td>元 素的父节点(parentNode)。

l    hasChildNodes()

该方法用来检查一个元素是否有子节点,返回值是 true 或 false.

   var booleanValue = element.hasChildNodes();

•       文本节点和属性节点不可能再包含任何子节点,所以对这两类节点使用 hasChildNodes 方法的返回值永远是 false.

•      如果 hasChildNodes 方法的返回值是 false,则 childNodes,firstChild,lastChild 将是空数组和空字符串。

7.  其他知识点

根节点

l    有两种特殊的文档属性可用来访问根节点

•      document.documentElement

该属性可返回存在于 XML 以及 HTML 文档中的文档根节点。

•      document.body

该属性是对 HTML 页面的特殊扩展,提供了对 <body> 标签的直接访问。

DOM节点信息:

每个节点都拥有包含着关于节点某些信息的属性。这些属性是:

l    nodeName(节点名称)

l    nodeValue(节点值)

l    nodeType(节点类型)

以下具体介绍这三种属性在文档的不同位置的作用。

nodeName 属性含有某个节点的名称:

l     varname = node.nodeName;

l    元素节点的 nodeName 是标签名称

l    属性节点的 nodeName 是属性名称

l    文本节点的 nodeName 永远是 #text

l    文档节点的 nodeName 永远是 #document

注释nodeName 所包含的 html 元素的标签名称永远是大写的

nodeValue:返回给定节点的当前值(字符串):

•       如果给定节点是一个属性节点,返回值是这个属性的值

•        如果给定节点是一个文本节点,返回值是这个文本节点的内容。

•        如果给定节点是一个元素节点,返回值是 null

•       nodeValue是一个 读/写 属性,但不能对元素节点的 nodeValue 属性设置值,但可以为文本节点的nodeValue 属性设置一个值

   var li = document.getElementById(“li”);

     if(li.firstChild.nodeType == 3)

      li.firstChild.nodeValue = “国庆60年”;

nodeType返回一个整数这个数值代表着给定节点的类型nodeType 属性返回的整数值对应着 12 种节点类型,常用的有三种:

•      Node.ELEMENT_NODE   ---1    -- 元素节点

•      Node.ATTRIBUTE_NODE ---2    -- 属性节点

•      Node.TEXT_NODE      ---3    -- 文本节点

•       nodeType 是个只读属性

转载于:https://www.cnblogs.com/yangkai-cn/archive/2012/11/07/4017370.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值