无法理解这一行的JavaScript

时间:2010-08-19 06:50:45

标签: javascript

感谢您的关注和时间。

我正在修改现有的JavaScript但无法理解一行代码。请帮助我理解这一行:

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

我很清楚直到.getElementsByTagName('td')sortOn作为参数在此函数中传递。但我无法理解[sortOn].firstChild.nodeValue;

请指导我,

感谢

4 个答案:

答案 0 :(得分:8)

.getElementsByTagName('td') - 返回TD元素列表 .getElementsByTagName('td')[sortOn] - 从该列表中提取单个元素
.firstChild - 返回位于此TD内的第一个元素 .nodeValue:点击此处 - https://developer.mozilla.org/En/DOM/Node.nodeValue

答案 1 :(得分:2)

[sortOn] 是数组表示法。它的工作方式与rows [i]完全相同。假设sortOn等于5,并且行[i] .getElementsByTagName('td')中有七个元素,它是<td>个元素的数组。然后你会得到第六个(JavaScript数组基于0),这将是一个<td>元素。

firstChild表示该td下面的第一个元素,所以在这种情况下

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

<em>元素是第一个孩子

nodeValue在这种情况下是该元素的内容,因此将返回“emphasis”。

您可能会找到gecko DOM reference useful

答案 2 :(得分:1)

rows[i].getElementsByTagName('td')将获得td个孩子的所有rows[i]元素。 [sortOn]部分选择td,其索引由sortOn参数指定。 .firstChild.nodeValue获取包含在td内的第一个元素中的文字。

更新:在DOM中,<td>等元素只能包含其他子元素,但它们没有任何文本属性。文本本身包含在一个特殊的“文本节点”中,该节点是<td>节点的子节点。这就是您使用.firstChild获取文本节点,然后使用.nodeValue获取该节点中包含的文本的原因。

答案 3 :(得分:1)

getelementsByTagName会返回一个包含相同标记的元素数组,然后使用sortOn变量选择指定的一个表单集合并带走他的第一个孩子并查看它。