zoukankan      html  css  js  c++  java
  • DOM

    DOM:可以重构整个HTML文档、添加、移除、改变或重排页面上的项目
      一.获取节点
        1.document
          (1).getElementById()
            获取特定ID元素的节点。如果找到相应的元素则返回该元素的节点对象,如果不存在,则返回null
          (2).getElementsByTagName()
            获取相同元素的节点列表(对象伪数组)
          (3).getElementsByName()
            获取相同名称的节点列表 (伪数组)
          (4).getElementsByClassName()
            获取相同class属性的节点列表(IE9以下不兼容)
          (5).document.documentElement
            获取html的方法
          (6).document.body:获取body的方法
          (7).querySelector()
            通过选择器获取一个元素(IE7及以下不兼容),返回布局在上方的第一个对象
              如:var oBox = document.querySelector("#box")
          (8).querySelectorAll
            通过选择器获取一组元素(IE7及以下不兼容),返回一个集合
              如:var oBox = document.querySelector("#box")[0] //当id名一样时,
        2.一般获取:
          childNodes
            功能:获取所有子节点,只适用于元素节点,返回元素节点和文本节点两种
            用法:
              var oBox=document.getElementById("box");
              for(i=0;i<oBox.childNodes.length;i++){
                console.log(oBox.childNodes[i])
              }
            结果:“北京电话”
              <strong>当升科技</strong>
              “hello world”
              分析:俩个文本节点,一个标签节点
          children
            功能:只获取元素节点,文本节点不会被获取到
            用法:
              var oBox=document.getElementById("box");
              for(i=0;i<oBox.children.length;i++){
                console.log(oBox.children[i])
              }
            结果:
              <strong>当升科技</strong>
            分析:一个元素节点
          attribute 不常用
            功能:获取指定对象的属性节点
            用法:console.log(oUl.attributes[0].nodeName)
        3.高级选取(节点指针)
          1.firstChild
            功能:用于获取当前元素节点的第一个子节点,
            注:相当于childNodes[0];
            用法:console.log(oUl.firstChild)
          2.lastChild
            功能:用于获取当前元素节点的最后一个子节点,
            注:相当于childNodes[box.childNodes.length – 1]
            用法:console.log(oUl.lastChild)
          3.parentNode
            功能:返回该节点的父节点。
            用法:console.log(oLi.parentNode)
          4.previousSibling (Sibling是兄弟姐妹的意思)
            功能:返回该节点的前一个同级节点。
            用法:console.log(oLo.previousSibling)
          5.nextSibling
            功能:返回该节点的后一个同级节点。
            用法:console.log(oLi.nextSibling)
      二:节点操作
        1.创建节点
          (1).createElement()
            功能:创建一个元素节点
            用法:var oH = document.createElement("h1");
              document.body.appendChild(oH);
          (2).createTextNode()
            功能:创建一个文本节点
            用法:var oTxt = document.createTextNode("我是一级标题");
              oH.appendChild(oTxt)
            结果:页面出现“我是一级标题”
          (3).createAttribute()
            功能:创建属性节点
        2.插入节点
          (1)insertBefore(新节点,插在哪个元素之前)
            <div id="box" ><div>
            var oDiv = document.getElementById("box");
            var oH1 = document.createElement("h1");
            var oTxt = document.createTextNode("一级标题");
            oH1.appendChild(oTxt);
            document.body.insertBefore(oH1,oDiv);

          (2)appendChild(),向指定节点的子节点列表末尾追加新的节点
           
        3.替换节点
          replaceChild(newNode, oldNode)
            功能:用新节点替换某个子节点。
            用法:vat oTxt1 = document.createTectNode("我是一个新的一级标题");
                oH.replaceChild(oTxt1,oTxt) //替换节点
        4.删除节点
          .父节点.removeChild(nodeChild):删除节点
            如:document.body.removeChild(oH) //移除子节点
        5.克隆(复制)节点
          cloneNode() 需要被复制的节点.cloneNode(true/false)
            功能:创建指定节点的副本
            用法1:参数为true时,复制当前节点及其子节点,参数为false时,只复制当前节点
              var oH2 = oH.cloneNode();//只克隆指定节点,不包含节点内容
              document.body.appendChild(oH2);
              var oH3 = oH.cloneNode(true); //克隆指定节点,包含节点内容
              document.body.appendChild(oH3)
      三 属性操作:对于className,和name。不能直接更改,只能用attribute
        1.查找属性:
          getAttribute()
            定义:获取特定元素节点属性(由程序员自己给标签添加的属性)的值
            特点:直接使用自定义的属性名来获取自定义属性时,IE最新版本不支持,其他浏览器不支持,因此要采用这个方法来访问。
            用法:oBox.getAttribute("name") //name是表单中的属性,如果设置oBox.class=name,div中的name不识别,

                只能用oBox.getAttribute("name")来获取,class是保留字,也只能用oBox.getAttribute("class")
            结果:打印出name的属性值
        2.更改属性:
          setAttribute()
            功能:创建或改变元素节点的属性
            用法:
              oBox.setAttribute("id","list");
              结果:HTML中id="box"这个属性名变为id="list"
              oBox.setAttribute("name","beijng");
              结果:HTML中增加了name="beijing"这个属性和属性名
        3.删除属性:
          removeAttribute
          功能:删除元素节点的指定属性
          用法:
            oBox.removeAttribute("id")
            结果:id这个属性和属性值不见了
     

      节点(node)
        HTML文档中所有的内容都是节点
        获取元素中所有子集节点:
          var oBox=document.getElementById("box");
          console.log(oBox.children)
          结果:<strong>当升科技</strong>
        种类:元素(标签)节点,文本节点,属性节点
        元素节点:strong/div等,nodeType返回值是1 特有children属性
          增:无中生有
            var div=document.creatElement("div")
            div.innerHTML="hello world";
            div.className="active";
            document.body.append(div)//这样是放在当前节点的最后,script后面
            oBox.append(div)//放在oBox里
          删:oBox.remove();
            结果:oBox整个不存在
          改:
            oBox.children[0].outerHTML="<strong>返回顶部</strong>"
            //改变当升科技为返回顶部

        属性节点:attribute获取节点属性(属性的增删改查),nodeType返回值是2
          注:attribute方法属于DOM方法,必须有DOM前缀,如oBox
          查:getAttribute()
            定义:获取特定元素节点属性(由程序员自己给标签添加的属性)的值
            特点:直接使用自定义的属性名来获取自定义属性时,IE最新版本不支持,其他浏览器不支持,因此要采用这个方法来访问。
            用法:oBox.getAttribute("name") //name是表单中的属性,如果设置oBox.class=name,div中的name不识别,只能oBox.getAttribute("name")来获取,
                class是保留字,也只能用oBox.getAttribute("class")
                结果:打印出name的属性值
          改:setAttribute()

            oBox.setAttribute("id","list");
              结果:HTML中id="box"这个属性名变为id="list"
            oBox.setAttribute("name","beijng");
              结果:HTML中增加了name="beijing"这个属性和属性名
          删:removeAttribute()

            oBox.removeAttribute("id")
            结果:id这个属性和属性值不见了
            案例
              获取元素节点中的所有属性节点
                console.log(oBox.attributes) //属性节点
                结果:NamedNodeMap{0:class,1:id,2:data-id,length:3} //获取第一个元素节点
                console.log(oBox.attributes[1])
                结果:id="box"
              获取第一个属性的返回节点类型
                console.log(oBox.attributes[1].nodeType)
                结果:2 //属性节点,返回值为2
              获取第一个属性的属性值
                console.log(oBox.attributes[1].nodeValue)
                结果:box


        文本节点 :text 换行符+缩进符,nodeType返回值是3
          删除文本节点:父节点.removeChild(子节点)

        属性:

          nodeType 返回节点的类型,适用于所有节点,获取节点类型
            console.log(document.nodeType);返回的是数字 ,给逻辑看
            1. 元素节点;
            2. 属性节点;
            3. 表示文本节点;
            8. 注释节点;
            9. document节点;
          nodeName 返回英文字符串节点类型; => 给人类看的;
            console.log(oBox.childNodes[i].nodeName)
            结果:#text STRONG #text
          nodeValue 属性值
            console.log(oBox.attributes[1])
            结果:id="box" //获取第一个元素节点
            console.log(oBox.attributes[1].nodeValue)
            结果:box
    若有任何错误,还望 指正

  • 相关阅读:
    BZOJ 3208: 花神的秒题计划Ⅰ
    BZOJ 3207: 花神的嘲讽计划Ⅰ
    BZOJ 2732: [HNOI2012]射箭
    BZOJ 3165: [Heoi2013]Segment
    BZOJ 3626: [LNOI2014]LCA
    2017 01 16 校内小测 ZXR专场
    BZOJ 3101: N皇后
    BZOJ 1106: [POI2007]立方体大作战tet
    BZOJ 2084: [Poi2010]Antisymmetry
    【UOJ#228】基础数据结构练习题 线段树
  • 原文地址:https://www.cnblogs.com/keyanjyl/p/7532147.html
Copyright © 2011-2022 走看看