zoukankan      html  css  js  c++  java
  • dom的一些笔记

                                  Dom复习

    1.获取标签名,常用的有3种方式:

       <div id="box" onclick="fn()"></div>

      var div = document.getElementById("box");

      var arr1 = document.getElementsByTagName("div")

      var arr2 = document.getElementsByClassName("leiming");

    2.onclick事件

      div.onclick = function () {
            //        alert(1);
            //可以操作标签的属性和样式。
             div.className = "aaa";
            div.style.width = "200px";
            div.style.height = "200px";
            div.style.backgroundColor = "red";
        }

        2.用函数名绑定)

         不能写写括号,否则成为了返回值    

         div.onclick = fn;
         function fn() {
        //3.书写事件驱动程序。
         alert(1);
         }

     

    3.windows.onload事件

     //什么条件下触动这个事件呢?页面加载(文本和图片)完毕的时候。
    //用途
    //js的加载时和html同步加载的。(如果使用元素在定义元素之间,容易报错。)
    //整个页面上所有元素加载完毕在执行js内容
    //window.onload可以预防使用标签在定义标签之前。

      案例:

      window.onload = function () {
        var aaa = document.getElementById("box");
        console.log(aaa);
        aaa.style.width = "100px";
    }

     <div id="box"></div>

    4.一个案例

       关闭京东的广告栏:dom1-05

    5.document 文本流

     //节点的访问看看

     <div class="box1">
        <div class="box2" id="box2"></div>
        <div class="box3"></div>
    </div>

     

    //1.box1是box的父节点
    var box2 = document.getElementsByClassName("box2")[0];
    var box2 = document.getElementById("box2")
    console.log(box2.parentNode);

    //2.nextElementSibling下一个兄弟节点
    console.log(box2.nextElementSibling);

    //3firstElementChild第一个子节点
    console.log(box2.parentNode.firstElementChild);

    //4所有子节点
    console.log(box2.parentNode.childNodes);
    console.log(box2.parentNode.children);

    //节点的增、删、查、改

     1.创建节点

     var aa=document.craeteElement

     var aaa = document.createElement("li");
    2.添加 appendChild(标签节点);
    var box1 = document.getElementsByClassName("box1")[0];
    box1.appendChild(aaa);
    box1.insertBefore(bbb,aaa);//把节点bbb放在aaa之前

    3.删除 removeChild(标签节点);
    box1.removeChild(bbb);
    aaa.parentNode.removeChild(aaa);//自杀,自己删除自己

    4.克隆
     var ccc = box1.cloneNode();//默认为false
    var ddd = box1.cloneNode(true);
    console.log(ccc);
    console.log(ddd);

     

     

    6.节点属性的获取与赋值

    //属性、赋值获取两种方式
    //1.元素节点.属性或者元素节点[属性]

    <img src="image/jd1.png" class="box" title="图片" alt="京东狗" id="aaa"/>

     Var eleNode=document.getelementbyid(aaa);

    eleNode.src = "image/jd2.png";
    eleNode.aaa = "bbb";
    console.log(eleNode.aaa);
    console.log(eleNode.src);
    console.log(eleNode.tagName);
    console.log(eleNode["title"]);
    console.log(eleNode["className"]);
    console.log(eleNode["alt"]);

     

    //2.元素节点.方法(); getAttributte set...  Remove...3个方法
    console.log(eleNode.getAttribute("id"));
    eleNode.setAttribute("id","你好");
    eleNode.setAttribute("ccc","ddd");
    eleNode.removeAttribute("id");

     

     

     

    7.案例(经典案例好好看看)

      

    8.value  innerHTML  innerText的区别

      <input id="inp1" type="text" value="我是inpput的value属性值"/>
    <div id="box1">
        我是box1的内容
        <div id="box2">我是box2的内容</div>
    </div>
    <div id="box3">
        我是box1的内容
        <div id="box4">我是box2的内容</div>
    </div>
    <script>

        //value:标签的value属性。
        console.log(document.getElementById("inp1").value);

        //innerHTML:获取双闭合标签里面的内容。(识别标签)
        console.log(document.getElementById("box1").innerHTML);
        document.getElementById("box1").innerHTML = "<h1>我是innerHTML</h1>";

        //innerText:获取双闭合标签里面的内容。(不识别标签)(老版本的火狐用textContent)
        console.log(document.getElementById("box3").innerText);
        document.getElementById("box3").innerText = "<h1>我是innerText</h1>";
    </script>

      

                             Dom2(记得查事件)

    1,隐藏二维码:核心代码

      

     2.文本框禁用

        btn1.onclick=function(){
                   //3.书写事件驱动程序
                  input.disabled="no";//填写任何的值都表示true表示禁用
              }
             btn2.onclick=function() {
                 input.disabled=false;
             }

    3.onfocus获取了焦点  onblur失去焦点(焦点就是光标是否在)

      文本框获取焦点

      

    4.重要的访问关系:

      //兄弟节点(前一个和后一个:previousSibling和nextSibling)
      //previousElementSibling和nextElementSibling在IE678中不支持。IE678不能获取文本节点。

      兼容性写法:

      1.前后兄弟节点

      var pre = box3.previousElementSibling || box3.previousSibling;
      var net = box3.nextElementSibling || box3.nextSibling;
      pre.style.backgroundColor = "red";
      net.style.backgroundColor = "yellow";

      2.第一个子节点,最后一个子节点

      var first = box3.parentNode.firstElementChild || box3.parentNode.firstChild;
      var last = box3.parentNode.lastElementChild || box3.parentNode.lastChild;

      3.所有子元素的获取方法:(2种方式)

       var arr = box3.parentNode.children;

        Var arr=box3.parentNode.childNodes;

      4.怎么指定一个节点呢?

    var index = 0;
    var node = box3.parentNode.children[index];

    Html结构如下:

    <ul>
        <li class="box1"></li>
        <li class="box2"></li>
        <li id="box3"></li>
        <li class="box4"></li>
        <li class="box5"></li>
    </ul>

    5.nodeType  nodeName   nodeValue

    <div id="box" value="111">你好</div>

    <script>

        var ele = document.getElementById("box");//元素节点
        var att = ele.getAttributeNode("id");//属性节点
        var txt = ele.firstChild;

          console.log(ele);

          console.log(att);
         console.log(txt);
        //属性1 nodeType
        console.log(ele.nodeType);//1      
        console.log(att.nodeType);//2
        console.log(txt.nodeType);//3

        //属性2 nodeName
        console.log(ele.nodeName);//DIV
        console.log(att.nodeName);//id 
        console.log(txt.nodeName);//#text

        //属性3 nodeValue
        console.log(ele.nodeValue);//null
        console.log(att.nodeValue);//box
        console.log(txt.nodeValue);//你好

     nodeType:1,document.get

             :2

    连续赋值样式:

                                     DOM3

      1.获取元素的函数封装    

        //1.功能:给定元素查找他的第一个子节点,并返回
       function getFirstNode(ele){
        var node=ele.firstElementChild||ele.firstChild;
        return node;
          }
      //2.功能:给定元素查找他的最后一个子节点,并返回
    function getLastNode(ele){
        var node=ele.lastElementChild||ele.lastChild;
        return node;
    }
      //3.给定元素查找他的下一个元素兄弟的节点,并返回
    function getNextNode(ele){
        return ele.nextElementSibling||ele.nextSibling;
    }
      //4.给定元素查找他的上一个元素兄返弟的节点,并返回
    function getPrevNode(ele){
        return ele.previousElementSibling||ele.previousSibling;
    }
    /**
     * 5.给定元素和索引值查找 指定索引值的兄弟元素节点,并返回
     * @param ele 元素节点
     * @param index 索引值
     * @returns {*|HTMLElement}
     */
    function getEleOfIndex(ele,index){
        return ele.parentNode.children[index];
    }

    /**
     * 6.寻找一个节点所有的兄弟节点
     * @param ele
     * @returns {Array}
     */
    function getAllSiblings(ele){
        //定义一个新的数组,装所有的兄弟元素。并且返回数组
        var newArr=[];
        var arr=ele.parentNode.children;
        for(var i=0;i<arr.length;i++)
        {
            if(arr[i]!=ele)//就是为了把自己排除在外
            {
                newArr.push(arr[i]);
            }
        }
        return newArr;
    }

        

    说明:注释方式,写完一个函数之后,在函数的上方 /** 然后按下enter键即可完成注释

    2.如何获取节点的style呢?

      主要有两种方式:box.style.backgroundColor=”red”;

                    box.style.cssText = " 200px; height: 200px; line-height:200px;"

    3.案例1. 文本高亮显示

      

       案例2:高级隔行变色

      案例3:百变皮肤

    4.定位和层级

      

    5.dom元素的创建的3种方式:

      (1)document.write();

          For:document.write("<li>我是document.write创建的</li>");

      (2)第二种:直接利用元素的innerHTNL方法。(innerText方法不识别标签)

          var ul = document.getElementsByTagName("ul")[0];

          ul.innerHTML += "<li id='li1'>我是innerHTML创建的</li>"

      (3)document.createElement(”div”);

        var newLi = document.createElement("li");
        newLi.innerHTML = "我是createElement创建的";

    6.节点的操作

      (之前已经说过了:就是几种常见节点的操作函数的使用)

       1.document.createElement();

       2. Ele.appenchild(ele1);

       3.ele.removeChild(ele1);

       4.ul.insertBefore(li3,li1);

       5.ul.replaceChild(li3,li2);

    在一些案例中反复用到了一种思想(先整体变成一种颜色,然后只更改那个要变的ele)

                                    Dom4

    1.水果排序案例(占了很大部分)

         

    2.定时器是重点

  • 相关阅读:
    26个Jquery使用小技巧
    jQuery之浮动窗口
    Visual Studio 2010 TFS指南
    Python
    HTML5小菜
    记一次重构经历【转载】
    Python学习笔记
    Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列
    搜索分词实现
    UML概要
  • 原文地址:https://www.cnblogs.com/z-web-2017/p/6927627.html
Copyright © 2011-2022 走看看