详解DOM(文档对象模型(Docment Object Model))

✍  DOM中定义了许多节点类型来表示节点的多个方面:

文档节点Document

最顶层的节点(跟节点),代表整个HTML文档,所有的其它节点都是附属它的。每个web文档都有一个文档节点

文档类型节点DocumentType

<!DOCTYPE>元素用于声明一个页面的文档类型定义(Document Type Declaration,即DTD)。此元素声明位于文档中的最前面的位置,处于<html>标签之前。通过确认页面的DTD,可以同时确定页面使用哪种W3C规范(比如HTML或XHTML规范)。☒

文档片段节点DocumentFragment

程序员可以使用DocumentFragment将一批子元素添加到任何类似node的父节点上,对这批子元素的操作不需要一个真正的根节点

元素节点Element

在HTML DOM中,Element对象表示HTML元素。可以拥有类型为元素节点、文本节点、注释节点的子节点。

文本节点Text

代表XHTML文档中元素的起始标记和结束标记之间,或者CDataSection内包含的普通文本。☒

属性节点Attr

代表元素节点开始标记内指定的属性。☒

CDataSection节点

CDataSection接口是Text接口的子接口,没有定义任何自己的属性和方法。通过从 Node接口继承nodeValue属性,或通过从 CharacterData接口继承data属性,可以访问CDataSection的文本内容。☒

注释节点Comment

代表注释。☒

(PS:☒表示该节点类型不能包含子节点)

✍  节点含有的方法

方法

描述

appendChild()

把新的子节点添加到指定节点

removeChild()

删除子节点

replaceChild()

替换子节点

insertBefore()

在指定的子节点前面插入新的子节点

createAttribute()

创建属性节点

createElement()

创建元素节点

createTextNode()

创建文本节点

getAttribute()

返回指定的属性值

setAttribute()

把指定属性设置或修改为指定的值

✍ 节点含有的属性

属性

描述

InnerHTML

获取元素内容的最简单方法是使用innerHTML属性

NodeName

属性规定的节点名称。

➣ nodeName是只读的

➣ 元素节点的nodeName与标签名相同

➣ 属性节点的nodeName与属性名相同

➣ 文本节点的nodeName始终是#text

➣ 文档节点的nodeName始终是#document

nodeValue

nodeValue 属性规定节点的值。

➣ 元素节点的nodeValue是undefined或null

➣ 文本节点的nodeValue是文本本身

➣ 属性节点的nodeValue是属性值

nodeType

nodeType 属性返回节点的类型。

➣ nodeType 是只读的

previousSibling

指向前一个兄弟节点;该节点为第一个节点时返回null

nextSibling

指向后一个兄弟节点;该节点为最后一个节点时返回null

firstChild

指向在childNodes列表中的第一个子节点

lastChild

指向在childNodes列表中的最后一个子节点

ownerDocument

指向这个节点所属的文档

✍ 如何处理元素属性?

即便节点对象已经具有attributes方法,且已被所有类型的节点继承,然而,只有元素节点才能有特性。元素节点的attributes属性其实是NamedNodeMap,它提供一些用于访问和处理其内容的方法,包括:

➣ getNamedItem(name)——返回nodeName属性值等于name的节点;

➣ removeNamedItem(name)——删除nodeName属性值等于name的节点;

➣ setNamedItem(node)——讲node添加到列表中,按其nodeName属性进行索引;

➣ item(pos)——像NodeList一样,返回在位置pos的节点;

(PS:这些方法都是返回一个Attr节点,而非特性值。)

✍ 怎么实现对节点的创建和操作?

➣ 对节点的创建

createElement(tagName)——创建标记名为tagName的元素;

var div = doucment.createElement('div'); //这样就创建了一个div元素

createTextNode(text)——创建包含文本的text的文本节点;

 var text = doucment.createTextNode('Hello World'); //这样就创建了一个文本节点

➣ 对节点的添加

appendChild(node)——把节点node添加到元素中;

 div.appendChild(text) //text文本节点被添加到div元素尾;

insertBefore(newNode,oldNode)——在元素中的oldNode节点前添加新的newNode节点;

div.insertBefore(newNode,oldNode) //在div元素中的oldNode节点前添加新的newNode节点

➣ 对节点的删除

removeChild(node)——删除元素中的node子节点;

 div.removeChild(text); //删除div元素中的text子节点

➣ 对节点的替换

replaceChild(newNode,oldNode)——在元素中的oldNode节点替换为新的newNode节点;

 div.replaceChild(newNode,oldNode); //在div元素中的oldNode节点替换为了newNode节点

➣ 创建文档碎片

createDocumentFragment()——每一次添加节点都会对页面进行渲染一次,这样进程就上,然后再一次性的添加到元素中;

➣ 节点克隆

cloneNode(deep)——复制指定节点,deep默认值为false,如果deep值为false,则克隆节点本身,如果值为true,则克隆该节点本身及其后代所有子节点。

➣ innerHTML

设置或返回行的开始标签和结束标签之间的 HTML。

✍ 对文本节点进行操作

DOM中定义的方法对文本节点进行操作

➣ appendData(String)——将字符串添加在文本节点的文本尾部;

➣ deleteData(offset,count)——删除文本节点中从指定位置开始的指定数量的字符;

➣ insertData(offset,string)——将指定字符串插入到文本节点指定的位置中;

➣ replaceData(offset,count,string)——用给定的字符串代替文本节点指定位置指定数量的文本数据;

➣ splitText(offset)——将指定位置的文本节点分成两个部分,将右边的部分返回为一个新的文本节点,将左边的部分留在元素位置;

<p id="txt">这是前面这是后面</p>
<script>
var txt = document.getElementById("txt").childNodes[0];
var y = txt.splitText(4);
document.write("新文本节点:"+txt.nodeValue+"====");
document.write("原文本节点:"+y.nodeValue);
</script>
//输出结果为:新文本节点:这是前面====原文本节点:这是后面

➣ substringData(offset,count)——从文本节点的文本数据中返回指定位置指定数目的字符串;

✍ 对table对象进行操作

➣ Table 对象集合

集合

描述

cells[]

返回包含表格中所有单元格的一个数组

rows[]

返回包含表格中所有行的一个数组

tBodies[]

返回包含表格中所有tbody的一个数组

➣ Table 对象属性

属性

描述

border

设置或返回表格边框的宽度

caption

对表格的<caption>元素的引用

cellPadding

设置或返回单元格内容和单元格边框之间的空白量

cellSpacing

设置或返回在表格中的单元格之间的空白量

frame

设置或返回表格的外部边框

id

设置或返回表格的id

rules

设置或返回表格的内部边框(行线)

summary

设置或返回对表格的描述(概述)

tFoot

返回表格的TFoot对象。如果不存在该元素,则为null

tHead

返回表格的THead对象。如果不存在该元素,则为null

width

设置或返回表格的宽度

➣ 标准属性

属性

描述

className

设置或返回元素的class属性

dir

设置或返回文本的方向

lang

设置或返回元素的语言代码

title

设置或返回元素的title属性

➣ Table 对象方法

方法

描述

createCaption()

用于在表格中获取或创建<caption>元素

createTFoot()

用于在表格中获取或创建<tfoot>元素

createTHead()

用于在表格中获取或创建<tHead>元素

deleteCaption()

从表格删除caption元素以及其内容

deleteRow()

用于从表格删除指定位置的行

deleteTFoot()

从表格删除tFoot元素及其内容

deleteTHead()

从表格删除tHead元素及其内容

insertRow()

用于在表格中的指定位置插入一个新行

JavaScript总结(五)的更多相关文章

  1. javascript中五种基本数据类型

    前言: JavaScript中有五种基本数据类型(也叫做简单数据类型)分别为:undefined.null.bolean.number.string:另外还含有一种复杂的数据类型:object. 深入 ...

  2. ASP.NET,C#后台调用前台javascript的五种方法

    C#后台调用前台javascript的五种方法 由于项目需要,用到其他项目组用VC开发的组件,在web后台代码无法访问这个组件,所以只好通过后台调用前台的javascript,从而操作这个组件.在网上 ...

  3. JavaScript中五种常见运算符

    一. in运算符 in运算符希望它的左操作数是一个字符串或可以转换为字符串,希望它的右操作数是一个对象.如果右侧的对象拥有一个名为左操作数值的属性名,那么表达式返回true.例如: var point ...

  4. 【JavaScript的五种基本数据类型及转换】

    js中有六种数据类型,包括五种基本数据类型(Number,String,Boolean,Null,Undefined),和一种混合数据类型就是特殊的(Object). "undefined& ...

  5. C#后台调用前台javascript的五种方法小结

    第一种,OnClientClick (vs2003不支持这个方法) <asp:Button ID="Button1" runat="server" Tex ...

  6. 【转】 C#后台调用前台javascript的五种方法

    第一种,OnClientClick    (vs2003不支持这个方法)<asp:ButtonID="Button1" runat="server" Te ...

  7. javascript学习五---OOP

    面向对象:JavaScript的所有数据都可以看成对象 JavaScript的面向对象编程和大多数其他语言如Java.C#的面向对象编程都不太一样.如果你熟悉Java或C#,很好,你一定明白面向对象的 ...

  8. JavaScript(五)——插入地图

    代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. ...

  9. javascript继承(五)—prototype最优两种继承(空函数和循环拷贝)

    一.利用空函数实现继承 参考了文章javascript继承—prototype属性介绍(2) 中叶小钗的评论,对这篇文章中的方案二利用一个空函数进行修改,可以解决创建子类对象时,父类实例化的过程中特权 ...

  10. JavaScript案例五:下拉列表左右选择

    用JavaScript实现下拉列表左右选择,很简单,不过要特别注意循环时要注意变量是否发生了变化(见代码) <!DOCTYPE html> <html> <head> ...

随机推荐

  1. eclipse安装lua

    单击Eclipse->Help->Install New Software… 在Work with中输入网址 Kepler - http://download.eclipse.org/re ...

  2. Oracle EBS 查询用户职责

    select b.user_name UserID, b.description User_Name, f.RESPONSIBILITY_NAME RESPONSIBILITY from FND_US ...

  3. EF的连表查询Lambda表达式和linq语句

    select c; ), b=> b.Id, p=> p.BlogId, (b, p) => new {b}); public class Blog { public int Id ...

  4. Flask配置文件和 路由系统

    debug = True开启debug模式 当你的代码在界面增减之后不用刷新界面自动更新 app.logger.error("这是error模式") app.logger.info ...

  5. 心灵鸡汤[all]

    1. [iPhone 有哪些非常有必要下载的 App] 2. 相 信 自 己 3. 英语四级作文模板 4. 比尔盖茨的人生忠告 5. 李嘉诚 <Are you ready> 6. 李嘉诚语 ...

  6. Linux setenforce命令详解[SeLinux操作]

    SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统. 关闭SELinux 临时生效: 命令临时 ...

  7. Linux FFmpeg(含x264、lame插件)安装记录

    What is FFmpeg? FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.它提供了录制.转换以及流化音视频的完整解决方案. What is x264? H. ...

  8. springmvc处理日期格式

    解决http400错误 通常有两个来源: 1 页面的下拉列表中传入了字符串,而服务器需要的是Integer类型的,所以服务器拒绝. 2, 浏览器传给服务器端的日期格式字符串,服务器端理解不了,所以需要 ...

  9. November 10th 2016 Week 46th Thursday

    Live like you were dying, love because you do. 生如将逝,爱自本心. When faced with our darkest hour, hope is ...

  10. if 的一切

    第一种语法: if 条件: # @引号是为了把条件和结果分开. 结果1 # 一个Tab或者4个空格 @告诉程序满足上面的if条件才会执行结果1结果2 如果条件为真(True),执行结果1,然后执行结果 ...