2010-08-19 54 views
1

感謝您的關注和時間。不能理解這行JavaScript

我正在修改現有的JavaScript,但無法理解一行代碼。請幫我理解這行:

rowArray[i].value = rows[i].getElementsByTagName('td')[sortOn].firstChild.nodeValue; 

我很清楚,直到.getElementsByTagName('td')sortOn在這個函數作爲參數傳遞。但我不明白[sortOn].firstChild.nodeValue;

請指引我,

感謝

回答

1

rows[i].getElementsByTagName('td')將得到所有td元素是rows[i]孩子。 [sortOn]部分選擇td,其索引由sortOn參數指定。 .firstChild.nodeValue獲取該td中第一個元素中包含的文本。

更新:在DOM中,元素如<td>只能包含其他子元素,但他們沒有任何text屬性。文本本身包含在<td>節點的子節點的特殊「文本節點」中。這就是爲什麼您使用.firstChild來獲取文本節點,然後使用.nodeValue來獲取該節點中包含的文本。

+0

感謝卡薩布蘭卡, 它是很有幫助的。你能不能多提一點解釋.firstChild和.nodeValue。 sortOn會將該單元格的內容比.firstChild.nodeValue的內容更加混亂。 謝謝 – haansi 2010-08-19 07:07:16

+0

@ haansi:我已經更新了答案。 – casablanca 2010-08-19 15:56:01

1

getelementsByTagName返回一個具有相同標記的元素數組,然後通過使用sortOn變量選擇指定的一個表單集合並帶上他的第一個孩子並查看它。

2

[sortOn] 是數組表示法。它的工作方式與行[i]完全相同。假設sortOn等於5,並且行[i] .getElementsByTagName('td')中有七個元素,它是一個<td>元素的數組。然後你會得到第六個(JavaScript數組基於0),這將是一個<td>元素。

則firstChild意味着TD下方的第一個元素,所以在這種情況下

<td><em>emphasis</em><strong>some text</strong></td> 

<em>元件是所述第一子

的nodeValue是在這種情況下該元素的含量,所以「重點」將被退回。

您可能會發現在gecko DOM reference useful

8

.getElementsByTagName('td') - 返回TD元素的列表。
.getElementsByTagName('td')[sortOn] - 從該列表中提取單個元素
.firstChild - 返回位於此TD內的第一個元素。
.nodeValue:在這裏看到的 - https://developer.mozilla.org/En/DOM/Node.nodeValue

+0

謝謝AndreyKo, 這是有幫助的。 我對一件事感到困惑。當[sortOn]將我們移動到所需的td。 但是.firstChild我不能理解它。請多幫一點。 謝謝 – haansi 2010-08-19 07:11:25

+0

請解釋一下 .firstChild - 返回定位在TD內的第一個元素。 在我的TD會有測試。這就是爲什麼我很困惑爲什麼它被使用。有什麼方法可以避免它,並直接訪問文本。如果它有一些優勢,請指導我。 謝謝 – haansi 2010-08-19 07:27:43