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
若有任何错误,还望 指正

posted @ 2017-09-16 18:32  柯岩  阅读(99)  评论(0编辑  收藏  举报