列表9-3 中的script 程序使用每個子元素(TITLE、AUTHOR、BINDING、PAGES 與PRICE)的text 屬性,來作為取得元素字符數(shù)據(jù)的快捷方法。例如,下列的程序代碼被用來擷取TITLE元素中的字符數(shù)據(jù):
title.innerText=Document.documentElement.childNodes(0).text;
text 屬性不僅提供了目前節(jié)點所代表的元素其文字內(nèi)容,也提供任何后續(xù)元素的文字內(nèi)容。當元素沒有任何子元素時,該屬性可以正確地擷取元素中的文字內(nèi)容(如元素TITLE)。然而,如果元素包含一個以上的子元素與字符數(shù)據(jù),則text 屬性將傳回所有的文字,如同下面范例所示(在這個范例中是「Moby-Dick Or,the Whale」)。
TITLE>Moby-Dick
SUBTITLE>Or,the Whale/SUBTITLE>
/TITLE>
為了只取得TITLE 元素的字符數(shù)據(jù),你必須存取TITLE 元素的子文字節(jié)點。
表格9-1 中,Element 節(jié)點的nodeValue 屬性的值是null。如果元素包含了字符數(shù)據(jù),則文字將被儲存于子Text 節(jié)點,而你可以從此Text 節(jié)點的nodeValue 屬性來存取字符數(shù)據(jù)。例如,如同前面范例所示,如果TITLE 元素的Element 節(jié)點包含文字「Moby-Dick」,則下面的程序代碼將提供TITLE 的字符數(shù)據(jù)「Moby-Dick」,而不含屬于SUBTITLE 的字符數(shù)據(jù):
Element.firstChild.nodeValue
(因為TITLE 元素的字符數(shù)據(jù)位置在其子元素的前面,所以由第一個子節(jié)點來表示字符數(shù)據(jù),因此你可以使用firstChild 屬性來擷取字符數(shù)據(jù)。)如果元素的字符數(shù)據(jù)與子元素、批注,或處理指令散置在一起,則每個個別的字符數(shù)據(jù)區(qū)塊將表示成為元素所屬的子Text 節(jié)點。例如,在下面范例中,ITEM 元素擁有三個子節(jié)點,其順序為:Text 節(jié)點表示第一個字符數(shù)據(jù)區(qū)塊,Element 節(jié)點表示子元素SUB-ITEM,而另一個Text 節(jié)點則代表第二個字符數(shù)據(jù)區(qū)塊:
ITEM>
character data block 1
SUB-ITEM>sub-item text/SUB-ITEM>
character data block 2
/ITEM>
表格9-5 分別列出Text 節(jié)點所提供的有用屬性和方式:
Text 節(jié)點的屬性 | 描述 | 范例 |
Length | 此節(jié)點的文字包含的字符個數(shù) | CharacterCount =Text.length; |
Text 節(jié)點的方法 | 描述 | 范例 |
SubstringData(char-offset,num-chars) | 傳回一個包含特定字符數(shù)目的字符串,該字符串從節(jié)點的文字內(nèi)容而來。 char-offset 為子字符串的起始位置,和num-chars 為子字符串的長度 |
SubString =Text.substringData(2,3); (從Text 元素的內(nèi)容傳回第二、三、四等三個字符) |