今天學習了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的開始與結束,相信努力一定會有不一樣的結果的。