[原]JavaScript學習筆記(二.DOM)

1.DOM

服務器---(返回)---HTML文件----(DOM樹)----瀏覽器

瀏覽器其實解析的是HTML文件的DOM樹,所以我們纔可以通過DOM來改變外觀,因爲更改DOM是直接修改顯示方式!

所以符合DOM標準的,一般在各個不同的瀏覽器也都支持的,因爲各個瀏覽器也同樣得遵循DOM的標準!


2.一切皆結點;

包括元素,文本,屬性和註釋


3.元素結點和文本結點

像<div>xx..</div>這樣的結點就是元素結點,元素結點有名無值

像"xxx"這樣只有文本的結點就是文本結點,文本結點無名有值


node                         nodeName                               nodeValue

<div>                            div                                         null/undefined

"abc"                             null/undefined                        "abc"


4.有一些瀏覽器並不支持Node對象

如:if(someNode.nodeType == Node.ELEMENT_NODE) 有可能會報錯說找不到Node


5.當用DOM操作結點時,有一些空白的字符也有可能被當作文本結點,所以這個一定要注意


6.在DOM樹上面[即HTML文檔中的結點],1個元素只能有1個父親;所以移動1個元素到另1個地方的時候,不必在原來的地方執行移除操作,直接在目的地加入就行了


7.getElementById, getElementsByName, getElementsByTagName

7.1 getElementById()


只有document對象能夠使用

返回的是1個對象[如果有多個id相同只返回第1個]


7.2 getElementsByName():

只有document對象能夠使用

返回的是數組

7.3 getElementsByTagName()

所有的結點都能使用

返回的是數組


	<p id="div_1">
		<input name="abc"/>
		<input name="abc"/>
	</p>
	<input type="button" onclick="countElement();" value="button"/>	
	<script>
	function countElement(){
		var div_1 = document.getElementById("div_1");
		var inputs1 = div_1.getElementsByTagName("input");
		var inputs1_1 = document.getElementsByName("abc");//div等結點沒有getElementsByName()這個方法
		alert(inputs1.length); //2
		alert(inputs1_1.length);//2
	}
	</script>

 

7.4 ie和firefox中的getElementsByName的不同

在ie 中getElementsByName(“test“)的時候返回的居然是id=test的object數組,而使用firefox則返回的是name= test的object的數組。按照w3c的規範應該是firefox的實現是正確的,只是不解ie爲什麼要實現成爲id=test的方式...

 

8. 有時候寫1個JS方法,然後調用的時候看firebug說找不到這個函數,但是名字檢查正確無誤,也只是報這個錯而已;後來發現原來是方法裏面有錯誤,但是這個錯誤前面的alert()也不會被調用...

還有1次最鬱悶的,還是JS函數不能調用,吸收了上面的經驗,後來發現,我要調用的function的名字,叫做createElement(); 跟document的一樣。。。所以無效。。。

又來了1次無敵鬱悶的,還是JS函數不能調用,吸收了上面2個經驗,後來發現,原來是<script type="text/javascript"/>中,雙引號變成中文的雙引號了!!!

 

	<p id="div_1">
		<input name="abc"/>
		<input name="abc"/>
	</p>
	<input type="button" onclick="countElement();" value="button"/>	
	<script>
	function countElement(){
		var div_1 = document.getElementById("div_1");
		var inputs1 = div_1.getElementByTagName("input"); //少寫了s,出錯導致函數無法被調用..
		var inputs1_1 = document.getElementsByName("abc");
		alert(inputs1.length); 
		alert(inputs1_1.length);
	}
	</script>
 

9.window對象

 

window.frames :數組對象,對應於所有幀對象<frameset>或者<iframe>所對應的                             window對象!

window.parent和window.top的區別:

window.top:最頂層的祖先窗口

window.parent : 裝載子窗口的窗口[即父窗口]

document.URL:返回當前文檔的 URL。很好用的一個屬性啊!

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章