zoukankan      html  css  js  c++  java
  • 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()

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

    我不作恶

    但有权拒绝为善

    我不赞同

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

  • 相关阅读:
    POJ 3140 Contestants Division (树dp)
    POJ 3107 Godfather (树重心)
    POJ 1655 Balancing Act (树的重心)
    HDU 3534 Tree (经典树形dp)
    HDU 1561 The more, The Better (树形dp)
    HDU 1011 Starship Troopers (树dp)
    Light oj 1085
    Light oj 1013
    Light oj 1134
    FZU 2224 An exciting GCD problem(GCD种类预处理+树状数组维护)同hdu5869
  • 原文地址:https://www.cnblogs.com/HackerBlog/p/6036233.html
Copyright © 2011-2022 走看看