JavaScript & DOM 學習筆記(三)

1. JavaScript 語言裏的對象能夠分爲三種類型:html

    a. 用戶定義對象(user-defined object):由程序員自行建立的對象。
node

    b. 內建對象(native object):內建在 JavaScript 語言裏的對象,如 Array、Math 和 Date 等
程序員

    c. 宿主對象(host object):由瀏覽器提供的對象。
數組

2. DOM 文檔的節點可分爲:元素節點、屬性節點和文本節點 等。瀏覽器

    元素節點(element node)DOM 的原子 是 元素節點。如筆記二中代碼部分,咱們使用了 <body>、<p>、<ul> 之類的元素。  <p title="a gentle reminder">Don't forget to buy this stuff.</p>this

    文本節點(text node):上面的 <p> 元素節點中,包含着的 「Don't forget to buy this stuff.」就是一個 文本節點。在 XHTML 文檔裏,文本節點 老是被包含在元素節點的內部。但並不是全部的元素節點都包含有文本節點。
spa

    屬性節點(attribute node):<p> 節點中 的 title="a gentle reminder" 就是一個屬性節點。由於屬性老是被放在起始標籤裏,因此屬性節點老是被包含在元素節點中。並不是全部的元素都包含着屬性,但全部的甦醒都被元素包含。code

3. 獲取元素的方式:(下面的方法名區分大小寫)htm

    a. getElementById(id):返回一個該 id 的元素節點。如:document.getElementById("idName")
對象

    b. getElementByTagName(tag):返回一個對象數組,每一個對象分別對應文檔中該 tag 標籤的元素。

    c. getElementByClassName(class):返回一個具備相同類名的元素的數組。這個方法能夠查找帶有多個類名的元素,只須要在參數中用 空格 將類名分隔開。如:document.getElementByClassName("class1 class2"); 多個類名的順序不影響結果。

4. 獲取和設置元素的屬性

    a. getAttribute:object.getAttribute(attribute);此方法不屬於 document對象,因此不能經過 document 對象去調用。只能經過元素節點對象調用。

    b. setAttribute:object.setAttribute(attribute);值得關注的細節:setAttribute 作出的修改不會反應在文檔自己的源代碼裏,也就是說不會改動源代碼。這種現象源自 DOM 的工做模式:先加載文檔的靜態內容,在動態刷新,而動態刷新不會影響文檔的靜態內容。這正是 DOM 的真正威力:對頁面內容進行刷新卻不須要在瀏覽器裏刷新頁面。

5. childNodes、nodeType、nodeValue 屬性

  • childNodes在一棵節點樹上,childNodes屬性能夠用來獲取任何一個元素的全部子元素,返回值是一個數組,而這個數組中包含全部的類型節點。事實上,文檔中幾乎每同樣東西都是一個節點,甚至連空格和換行符都會被解釋爲節點。

  • nodeType:幸虧的是,每個節點都有 nodeType 屬性,nodeType 屬性的值 是一個數字。nodeType 屬性總共有 12 種可取值,其中三種最具實用價值:  

    元素節點 nodeType 屬性值是 1,屬性節點 nodeType 屬性值是 2,文本節點 nodeType 屬性值是 3

  • nodeValue:若是想改變一個文本節點的值,那就使用 nodeValue 屬性來獲取該文本對象的值 node.nodeValue。

    例如:一個文本節點 

<p id="description">Choose a image.</p>

    注意:用 nodeValue 屬性獲取 description 對象的值時,獲得的並非包含在這個段落裏的文本。使用 alert (description.nodeValue) 來驗證,返回的是一個 null 值。<p>元素自己的 nodeValue 是一個空值。而包含在 <p> 元素中的文本是另外一個節點,它是<p> 元素的第一個子節點。正確的獲取文本是這樣的:alert(description.childNodes[0].nodeValue)

6. firstChild 和 lastChild 屬性

    上面介紹的 chiildNodes[0] 有個更直觀的同義詞 firstChild。若是隻須要訪問 childNodes 數組的第一個元素,就能夠使用 firstChild。這不只更加簡短,並且可讀性更強。 一樣,與之對應的 node.childNodes[node.childNodes.length - 1] 也有個同義詞, node.lastChild。用來獲取元素 childNodes 中的最後一個元素。

相關文章
相關標籤/搜索