• JavaScript--DOM编程


    1、DOM:Document Object Model(文本对象模型):

    --D:文档-html文档或xml文档;

    --O:对象-document对象的属性和方法;

    --M:模型;

    --DOM是针对xml(html)的基于树的API;

    --DOM树:节点(node)的层次;

    --DOM把一个文档表示为一颗家谱树(父、子、兄弟);

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

    2、节点(node):来源于网络理论,代表网络中的一个连接点。网络是由节点构成的集合。

    --1)元素节点;

    --2)属性节点:元素的属性,可以直接通过属性的方式来操作;

    --3)文本节点:是元素节点的子节点,其内容为文本。

    3、获取元素节点:

    --1)document.getElementById: 根据元素id属性获取对应的单个节点;

    --2)document.getElementsByTagName:根据标签名获取指定节点名字的数据,该方法是node接口的方法,每一个节点都具有该方法;

    --3)document.getElementsByName:根据节点的name属性获取符合条件的几点数组,但IE的实现方式与W3C标准有差别,在html文档中若某节点(li)没有name属性,则IE无法使用该方法获取指定的节点。

    4、读写属性节点:

    --直接使用元素节点来获取相应的属性节点并对其进行相应的操作:

    alert(nameNode.value);
    nameNode.value = "ABCD";

    --通过元素节点的getAttributeNode方法来获取属性节点,然后再通过nodeValue来读写属性值;

    5、获取元素节点的子节点(只有元素节点才有子节点):

    --childNodes属性可以获取全部子节点,但是因为可以通过元素节点的getElementsByTagName来获取指定的子节点,所以该方法不实用;

    --firstChild属性获取第一个子节点;

    --lastChild属性获取最后一个子节点。

    6、获取文本节点:

    --文本节点也是元素节点的子节点,可以直接通过元素节点来获取文本节点,然后通过文本节点的nodeValue属性来读写其内容。

    7、三种类型的节点都具有以下三个属性:

    --nodeType : 节点类型:1表示元素节点;2表示属性节点;3表示文本节点

    --nodeName:节点名称

    --nodeValue:节点值

    --其中nodeType和nodeName两个属性是只读属性,而nodeValue可修改。

    8、创建元素节点:

    --1) createElement():按照给定的标签名创建一个新的元素节点;

    --2)方法只有一个参数:被创建的元素节点的名字,为字符串类型;

    --3)方法的返回值是一个指向新建节点的引用指针,是一个元素节点,nodeType为1;

    --4)新元素节点不会自动添加到文档里,它只是存在于JavaScript上下文的对象。

    9、创建文本节点:

    --1) createTextNode():创建一个包含着给定文本的新文本节点;

    --2)参数:新建文本节点所包含的文本字符串;

    --3)方法的返回值是一个指向新建节点的引用指针,是一个文本节点,nodeType为3;

    --4)新元素节点也不会自动添加到文档里

    10、为元素节点添加子节点:

    --1) appendChild(): var reference = element.appendChild(newChild);

    --2) 指定子节点newChild将成为给定元素节点element的最后面一个子节点;

    --3) 方法的返回值是一个指向新增子节点的引用指针。

    11、节点的替换:

    --1) replaceChild():把一个给定父元素里的一个子节点替换为另一个给定的子节点;

    --2)var reference = element.replaceChild(newChild, oldChild);

    --3)返回值是一个指向已被替换的子节点的引用指针;

    --4)该改节点除了替换的功能以外还有移动的功能;

    --5)改方法只能完成单向替换,若需要使用双向替换,需要自定义函数:

    function replaceBoth(aNode, bNode){
        //若两个节点相等,则直接返回
        if(aNode == bNode){
            return;
        }
        //获取两个节点的父节点
        var aParent = aNode.parentNode;
        var bParent = bNode.parentNode;
                    
        //若父节点都不为空
        if(aParent && bParent){
            //获取两个节点其中一个节点的克隆
            var aNodeClone = aNode.cloneNode(true);
            
            //克隆的节点不包括原节点的响应函数和其他一些属性,因此需手动为其添加
            aNodeClone.onclick = aNode.onclick;
            aNodeClone.index = aNode.index;
            
            //使用父节点的replaceChild()方法进行互换
            bParent.replaceChild(aNodeClone, bNode);
            aParent.replaceChild(bNode, aNode);
        }
    }

    12、删除节点:

    --1) removeChild():从一个给定元素里删除一个子节点;

    --2) var reference = element.removeChild(node);

    --3)返回值是一个指向已被删除的节点的引用指针;

    --4)某个节点被removeChild()方法删除时,这个节点所包含的所有子节点将同时被删除。

    13、插入节点:

    --1)insertBefore():将一个节点插入到一个给定元素节点的给定子节点的前面;

    --2)var reference = element.insertBefore(newNode, targetNode);

    --3)节点newNode将被插入到element中并出现在targetNode的前面;

    --4)targetNode必须是元素节点element的子节点。

    --5)可以使用insertBefore()方法实现insertAfter()方法:

    function insertAfter(newNode, refNode){
        //获取被插入节点的父节点
        var parentNode = refNode.parentNode;
        //若存在父节点
        if(parentNode){
            //若被插入节点为父节点的最后一个子节点,则直接将新节点插入到父节点的最后一个子节点处
            if(refNode == parentNode.lastChild){
                parentNode.appendChild(newNode);
            }
            //否则,先获取被插入子节点的后一个兄弟节点,然后再在兄弟节点前面插入新节点
            else{
                var nextNode = refNode.nextSibling;
                parentNode.insertBefore(newNode, nextNode);
            }
        }
    }

    14、innerHTML属性:

    --1)浏览器几乎都支持该属性,但不是DOM标准的组成部分;

    --2)innerHTML属性可以用来读写某给定元素里的HTML内容;

  • 相关阅读:
    阿里在线笔试总结
    JAVA断言使用
    小心人员中的薄弱点
    Ubuntu 12.04.4 LTS下linphone-android编译记录
    Java基础:异常的限制
    Java基础:小知识点
    js正则表达式中和\
    Maven管理下Struts、Hibernate编译过程中配置文件缺失导致的“No result defined for action”和getSession()发生“NullPointerException”的解决办法
    Java基础:final关键字
    Java基础:复用类
  • 原文地址:https://www.cnblogs.com/tengtao93/p/5017332.html
Copyright © 2020-2023  润新知