DOM的學習


                   今天學習了DOM,感覺學習起來真的沒那么簡單啦,這不是一個好現象啊,只有依靠自己大補課,嘿嘿,具體的總結了一下,今天學習的其實並不多,僅僅學習了不同的節點類型,但是知識還是蠻碎的,要一點一點的總結,昨天學習的是javascript中的引用類型,也是碎的知識點,而我僅僅總結了具體的類型和其中有關的方法,並沒有詳細的總結其使用的方法,由於時間都浪費在了看書上面,我感覺我不喜歡什么也不問的去掌握這個知識點,更傾向於系統的學習,然后知道它的具體使用方法和聯系,所以還是更希望有一本可以給我方向的javascript書。

          一.Node類型

<body>
    <div id="outerdiv">我是外層DIV313
        <div id="centerDiv"> 我是中層DIV
            <div id="innerDiv">我是內層div</div>
            內層div結束
        </div>
        我是最后一個空白節點
    </div>
     <script>
         var outchildnode = document.getElementById("outerdiv");//首先獲取父節點div
         for (var i = 0; i < outchildnode.childNodes.length; i++) {
             alert(outchildnode.childNodes[i].nodeValue);       //僅僅遍歷出了父節點的子節點的值,而子節點的子節點則顯示為null
         }

         alert(childnode.firstChild.nodeType);   //nodeType在這里是輸出節點的類型,1表示的是元素節點;2表示的是實行節點;3表示的是文本節點
         alert(childnode.firstChild.nodeValue);         
         //獲取div的第一個節點,在這里需要注意的是子節點包括文本、元素和屬性節點,所以第一個即是文本節點,而nodeVaule是現實節點的值
         alert(childnode.lastChild.nodeName);       //獲取的是最后一個節點,nodeName顯示的是文本節點#text
     </script>
</body>

                說起來node類型,在這里主要舉例說明了nodeType和nodeValue、nodeName,其實這三個屬性看起來還是蠻容易記得的,但是在使用起來在細節上面還是要注意的,nodevalue僅僅遍歷出了父節點的下一個節點的值,和子節點的子節點沒有關系等,這三個屬性使用起來還是要細心的。

         二.Document類型

<body>
    <p>
        hello world p標簽1
    </p>
    <p>
        hello world p標簽2
    </p>
    <p id="p">Hello</p>
    <p>Tom</p>
    <p>Cruise</p>
    <input type="text" name="txtname" value="123 " />
    <input type="password" name="txtname" value="345" />
    <div class="div">
        Hello World div
    </div>
    <div class="div">
           Hello World div
    </div>
   <div>
          Hello World
   </div>
    <script>
        var p = document.getElementsByTagName("p");   //在這里使用getElementsByTagName方法的參數是一個標簽元素,我們主要是通過p標簽來獲取元素的
        alert(p.length);              //當打印長度都即可知道存在p標簽元素
    </script>
        <script>
        var pname = document.getElementById("p");       //通過id獲取html中的元素
        alert(pname.innerHTML);        //把內容顯示在信息框中
    </script>
    <script>
        var classname = document.getElementsByName("txtname");
        for (var i = 0; i < classname.length; i++) {        //通過元素的屬性名字獲取元素
            alert(classname[i].value)         //顯示值
        }
    </script>
    <script>
        var v = document.getElementsByClassName("div");//類選擇器的名字
        for (var i = 0; i < v.length; i++) {
            alert(v[i].innerHTML);
        }
    </script>
    <script>
        var r = document.querySelector(".div");    //參數為選擇器
        for (var i = 0; i < r.length; i++) {
            alert(r[i].innerHTML);
        }
    </script>
</body>
<script>
        function insertP(text) {
            var str = "<p>";
            str += text;
            str += "</p>";
            document.write(str);
        }
    </script>
<body>
    <p id="ppp">p標簽</p>
    <script>
        alert(document.write("<p>我是動態的P標簽</p>")); //可以使用write動態添加一個p標簽,但是一般把它封裝為一個方法,適用於多次添加同一元素的內容

        for (var i = 0; i < 5; i++) {
            insertP("我是動態的P標簽");    //連續插入該文本信息5次
        }
    </script>
</body>

                     總結Document類型,我想說的是在這里首先總結了獲取元素的幾種方式,可以通過其元素的名稱,id名稱等,在上面的最后一種方式之前是存在的,但是現在似乎不能使用了,我目前還不知,然后是方法write的使用,即文檔寫入,而write方法可以原樣輸出,這個類型使用起來還是容易記得的,嘿嘿。

                     三.Element類型

<body>
      <div id="div" class="divclass" name="divname">
       <script>
           //var div = document.getElementById("div");    //獲取div元素
           //var divattribute = div.getAttribute("class");      //通過getAttribute獲取div元素中的屬性
           //alert(divattribute);
           var setattribute = div.setAttribute("name", "divdiv");   // 接受兩個參數,第一個為要設置的特性名,第二個為設置的值 
           alert(div.getAttribute("name"));
           var remove = div.removeAttribute("name");           //徹底刪除元素特性的值,而且也會從元素中刪除特性
           alert(div.getAttribute("name"));                 //當顯示null時間說明已經刪除該特性
       </script>
</body>

                  在這里,我剛開始一直是寫的alert(setattribute ),然后提示未定義,感覺還是蠻奇怪的,那時間就誤把它當做一個變量,認為輸出即可,還是太天真了,其實根本就卻不是這樣的,具體的應該是設置完新的值后需要獲取元素的值,並不能直接輸出,在一友友的幫助下反應過來啦,嘿嘿,這樣的寫法其實只能歸於自己不熟悉,方法的使用都不知道,希望下次能夠我注意。而在這里關於Element類型主要是取得元素特性和獲取元素特性,甚至可以清除元素的特性。

var p = document.createElement("p");  //創建新元素
<body>
    <div id="div">div元素</div>
    <script>
        var p = document.createElement("p");  //創建新元素
        var doc = document.createTextNode("我是text元素");//創建文本元素
        p.appendChild(doc);         //追加子節點

        document.getElementById("div").appendChild(p);     //把p標簽添加到div元素中
        
    </script>
</body>

          這里是創建新元素,嘿嘿,還是可以動態的添加元素的子節點的。前面用到Element的方法如果使用熟練,那么在這里就可以簡單的練習下即可,這里還是很好理解的。

          四.其他類型

         其他類型還有Text類型、Comment類型、CDATASection類型、DocunmentType類型、DocunmentFragment類型和Attr類型等,而上面的一個例子中寫的,創建文本元素,是屬於Text類型的,現在的我們僅僅簡單的學會創建文本節點即可,其他的類型我也只是了解。

         嘿嘿,今天就寫到這里,還有好多小知識點沒有很熟練的掌握,到今天為止學習javascript已經是四天,感覺學的還是蠻多的,記得周一僅僅知道了javascript的存在(http://www.cnblogs.com/dyxd/p/4204278.html);周二講的是基本概念:語法、關鍵字、數據類型、操作符以及一些語句的使用(if、if...else..、while、do...while、for以及for...in等);周三講的就是引用類型(http://www.cnblogs.com/dyxd/p/4204278.html);今天的內容就是DOM,在四天的時間里面學習的東西還是蠻多的,不過最重要的是我要一點一點的消化。學習是一個循序漸進的過程,也是1=1的開始與結束,相信努力一定會有不一樣的結果的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM