2010-08-19 33 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