對這個函數進行擴展
圖片庫里每個圖片鏈接都有一個tittle屬性。可以把這個屬性取出來并讓它和相應的圖片一同顯示在網頁上。tittle屬性的值可以用getAttribute輕而易舉的得到:
var text = whichpic.getAttribute("tittle");
光提取tittle屬性的值還不夠,我們還需要把它插入HTML文檔中。我們需要用到幾個新的DOM屬性。
childNodes屬性
childNodes屬性可以用來獲得任何一個元素的所有子元素,是一個包含這個元素全部子元素的一個數組:
element.childNodes
我們可以查出元素的全體子元素有多少個。因為返回的試一個數組,所以用length屬性可以知道它所包含的元素的個數:
element.childNodes.length
在函數內部的alert函數只有在函數被觸發的時候才能檀樹警示框,在外部的alert會按照順序執行。如果想這個函數在頁面加載的時候被執行,需要用onload事件處理函數:
window.onload = founction()
nodeType屬性
這個節點可以讓我知道元素的節點類型:
node.nodeType
nodeType返回的值是一個數字不是英文字符串。nodeType屬性總共有12個值,但只有三種具有使用價值:
- 元素節點的值為1。
- 屬性節點的值為2。
- 文本節點的值為3。
增加一段描述
加一個文本節點,一段文字,在顯示圖片的時候,把這個文字的值替換成目標文件的tittle的值。
<p id="description">Choose an image.</p>
用js修改showPic函數
增加一條語句來獲取whichpic對象的title屬性值。存入text變量:
var text = whichpic.getAttribute("title");
接著獲取description元素:
var description = document.getElementById("description");
nodeValue屬性
nodeValue用來得到(和設置)一個節點的值:
`node.nodeValue`
注意的是使用description.nodeValue
獲得的值并不是包含在這個段落里的文本,將返回一個null,因為p元素本身的nodeValue屬性是一個空值。
包含在p元素里的文本是另一個節點,是p元素的第一個子節點,所以可以:
description.childNodes[0].nodeValue
這樣獲取它的第一個子節點的屬性值。
firstChild和lastChild屬性:
node.firstChild 等價于 node.childNodes[0]
node.lastChild 等價于 node.childNodes[node.childNodes.length-1]
更加簡短而且具有可讀性。
使用nodeValue完成
var description = document.getElementById("description");
var text = whichpic.getAttribute("tittle")
description.childNodes[0].nodeValue = text
//等價于 description.firstchild.nodeValue = text
三行代碼含義:
- 當某個圖片鏈接被點擊,這個鏈接的tittle屬性值被提取保存到text變量中。
- 得到id為description的元素,保存在變量description中。
- 把description對象的第一個子元素的nodeValue屬性值設置為變量text的值。