zoukankan      html  css  js  c++  java
  • DOM(一):节点层次-Node类型

    Node类型
    DOM1级定义了一个Node接口,该接口将由DOM中的所有节点类型实现,每个节点都有一个nodeType属性,用于表明节点的类型。节点类型由在Node
    类型中定义的下列12个数值常量来表示,任何节点类型必居其一:

    元素节点   Node.ELEMENT_NODE(1)
    属性节点   Node.ATTRIBUTE_NODE(2)
    文本节点   Node.TEXT_NODE(3)
    CDATA节点 Node.CDATA_SECTION_NODE(4)
    实体引用名称节点    Node.ENTRY_REFERENCE_NODE(5)
    实体名称节点   Node.ENTITY_NODE(6)
    处理指令节点   Node.PROCESSING_INSTRUCTION_NODE(7)
    注释节点   Node.COMMENT_NODE(8)
    文档节点   Node.DOCUMENT_NODE(9)
    文档类型节点   Node.DOCUMENT_TYPE_NODE(10)
    文档片段节点   Node.DOCUMENT_FRAGMENT_NODE(11)
    DTD声明节点 Node.NOTATION_NODE(12)

    为了确保跨浏览器兼容,最好还是将nodeType属性与数字值进行比较

    if(someNode.nodeType == 1){
        console.log('node is an element.');
        value = someNode.nodeName;
    }

    nodeName中保存的始终都是元素的标签名,而nodeValue的值则始终为null。在使用这两个值以前,最好是像上面这样先检测一下节点的类型

    NodeList
    每个节点都有一个childNodes属性,其中保存着一个NodeList对象,NodeList对象是一种类数组对象,用于保存一组有序的点,可以通过位置来访问
    这些节点。NodeList对象是自动变化的

    <!DOCTYPE html>
    <html>
        <head>
            <title>sample page</title>
        </head>
        <body>
            <p>Hello World!</p>
        </body>
    </html>    
    var firstChild = $(html).childNodes[0];
    var secondChild = $(html).childNodes.item(1);
    var count = $(html).childNodes.length;

    无论使用方括号还是使用item()方法都没有问题,length属性表示都是访问nodelist都那一刻,其中包涵的节点数量

    将NodeList对象转化为数组

    function converToArray (nodes) {
        var arrary = null;
        try {
            array = Array.prototype.slice.call(nodes,0); //在ie8及之前版本中无效,需要手动创建数组
        }catch (ex) {
            array = new Array();
            for (var i=0,len=nodes.length ; i<len ; i++) {
                array.push(nodes[i]);
            }
        }
        return array;
    }

    检测是第一个节点还是最后一个
    每个节点都有一个parentNode属性,该属性指向文档树中的父节点。
    包含在childNodes列表中的每个节点相互之间都是同胞节点,previousSibling(上一个同胞节点),nextSibling(下一个同胞节点)

    if(someNode.nextSibling === null){
        console.log('last node'); //最后一个节点
    }else if(someNode.previousSibling === null){
        console.log('first node'); //第一个节点
    }

    如果列表只有一个节点,那么该节点的nextSibing和previousSibling都为null.

  • 相关阅读:
    PAT 甲级 1113 Integer Set Partition
    简单 dp
    #Leetcode# 707. Design Linked List
    #Leetcode# 817. Linked List Components
    #Leetcode# 268. Missing Number
    #Leetcode# 328. Odd Even Linked List
    #Leetcode# 445. Add Two Numbers II
    jzoj 1252. 天平
    2019.01.26【NOIP提高组】模拟 B 组 总结
    【NOIP2011DAY2】计算系数
  • 原文地址:https://www.cnblogs.com/wzndkj/p/8705549.html
Copyright © 2011-2022 走看看