感谢您的关注和时间。
我正在修改现有的JavaScript但无法理解一行代码。请帮助我理解这一行:
rowArray[i].value = rows[i].getElementsByTagName('td')[sortOn].firstChild.nodeValue;
我很清楚直到.getElementsByTagName('td')
,sortOn
作为参数在此函数中传递。但我无法理解[sortOn].firstChild.nodeValue;
请指导我,
感谢
答案 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”。
答案 2 :(得分:1)
rows[i].getElementsByTagName('td')
将获得td
个孩子的所有rows[i]
元素。 [sortOn]
部分选择td
,其索引由sortOn
参数指定。 .firstChild.nodeValue
获取包含在td
内的第一个元素中的文字。
更新:在DOM中,<td>
等元素只能包含其他子元素,但它们没有任何文本属性。文本本身包含在一个特殊的“文本节点”中,该节点是<td>
节点的子节点。这就是您使用.firstChild
获取文本节点,然后使用.nodeValue
获取该节点中包含的文本的原因。
答案 3 :(得分:1)
getelementsByTagName
会返回一个包含相同标记的元素数组,然后使用sortOn
变量选择指定的一个表单集合并带走他的第一个孩子并查看它。