• JavaScript总结(五)


    详解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()

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

    我不作恶

    但有权拒绝为善

    我不赞同

    但是我捍卫你不为善的权力

  • 相关阅读:
    JS数组(JSON)整合篇-方法整理
    C#匿名对象(转JSON)互转、动态添加属性
    js操作ListBox列表(select)内移动
    w5cValidator【AngularJS】 2.0 版本发布
    {{angular.js 使用技巧}}
    {{angular.js 使用技巧}}
    关于cocoapods添加静态库的奇葩配置
    寻觅[Getting Answers]
    前端和后端开发的异同
    micro-service构建平台
  • 原文地址:https://www.cnblogs.com/HackerBlog/p/6036233.html
Copyright © 2020-2023  润新知