zoukankan      html  css  js  c++  java
  • javascript的节点的概念

    1 <html>
    2             <head>
    3                 <title></title>
    4             </head>
    5             <body>
    6 
    7             </body>
    8         </html>

    文档节点是每个文档的根节点.

    在我们的页面中,文档节点只有一个子节点即<html>.我们称之为文档元素.在XML中,没有预定义的元素,因此任何元素都有可能成为文档元素

    javsccript中的所有节点类型都继承自Node类型.所以所有的节点都有着相同的基本属性和方法.

    没个节点都有一个nodeType属性.用于表明节点的类型.
    NODE.ELEMENT_NODE 1
    NODE.ATTRIBUTE_NODE 2
    NODE.TEXT_NODE 3
    NODE.CDATA_SECTION_NODE 4
    NODE.ENTITY_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
    NODE.NOTATION_NODE 12

    window.onload = function () {
                var oDiv = document.getElementById("guoDiv");
                if (oDiv.nodeType == Node.ELEMENT_NODE) {//在IE下会报错
                    alert("不好暴露了");
                }
                else
                    alert("没被发现");
            }

    上面的代码(Node.ELEMENT_NODE)在IE中会报错,
    因为IE没有公开NODE的类型构造函数.
    为了确保浏览器的兼容性,可以这个样子写

    1         window.onload = function () {
    2             var oDiv = document.getElementById("guoDiv");
    3             if (oDiv.nodeType == 1) {//在IE下会报错
    4                 alert("不好暴露了");
    5             }
    6             else
    7                 alert("没被发现");
    8         }

    要了解节点的具体信息,可以使用nodeName和nodeValue这两个属性

    1 window.onload = function () {
    2             var oDiv = document.getElementById("guoDiv");
    3             alert(oDiv.nodeName); //DIV
    4             alert(oDiv.nodeValue);//null
    5         }

    每个节点都有一个childNodes属性,其中保存着一个NodeList对象.
    NodeList是一种类数组对象,用于保存一组有序的节点,可以通过位置来访问这些节点.
    注意NodeList不是Array实例.虽然他有length属性,也可以通过方括号访问NodeList值.
    NodeList对象的独特之在于,它实际上是基于DOM结构动态执行查询的结果,因此DOM结构的变化能够自动反映在ModeList对象上.
    所以NodeList是有生命,有呼吸,而不是在我们第一次访问他们的属性时拍摄下来的一张快照.

    1 window.onload = function () {
    2             var oDiv = document.getElementById("divFather");            
    3             var firstChild = oDiv.childNodes[1];            
    4             alert(firstChild.innerHTML);//1
    5         }

    NodeList不是数组,那么就不能使用数组的方法了.
    下面是将NodeList转换成数组

     1 function converToArray(nodes) {
     2             var array = null;
     3             try {
     4                 array = Array.prototype.slice.call(nodes, 0); //针对非IE
     5             }
     6             catch (e) {
     7                 array = [];
     8                 for (var i = 0, len = nodes.length; i < len; i++) {
     9                     array.push(nodes[i]);
    10                 }
    11             }
    12             return array; 
    13         }
  • 相关阅读:
    HTTP协议
    浏览器兼容性问题
    面试笔试重点总结:操作系统、计算机网络、设计模式
    笔试、面试重点总结:算法基础、数据结构
    笔试、面试重点总结:WIN32、MFC与Linux
    《Java程序员面试笔试宝典》终于在万众期待中出版啦~
    《Java程序员面试笔试宝典》之Static关键字有哪些作用
    《Java程序员面试笔试宝典》之字符串创建与存储的机制是什么
    《Java程序员面试笔试宝典》之为什么需要public static void main(String[] args)这个方法
    《Java程序员面试笔试宝典》之Java变量命名有哪些规则
  • 原文地址:https://www.cnblogs.com/guoyansi19900907/p/3625179.html
Copyright © 2011-2022 走看看