开发者问题收集

Javascript 从 TD 访问 TR

2010-03-26
47052

我有一个表格行,其中有一个 td(无论它代表什么)。我想更改 TD 所在 TR 的类属性,而不使用 ID 或名称。就像这样:

<tr>
    <td onclick="[TR].setAttribute('class', 'newName')">My TD</td>
</tr>

我该怎么做?

3个回答

td 代表表格数据..

现在.. 在您的情况下,您需要 tdparentNode 属性..

<tr>
<td onclick="this.parentNode.setAttribute('class', 'newName')">My TD</td>
</tr>

或者如 bobince 在他的评论中所建议的那样

<td onclick="this.parentNode.className= 'newName'">My TD</td>
Gabriele Petrioli
2010-03-26

在 jquery 中,如果您有对 td 的引用,那么这将非常简单:

$(this).closest('tr');

如果您真的不想依赖 jQuery,那么您可以做一个循环来获取父节点并检查其类型,这是一种更通用的解决方案。在这种情况下,您可以只获取父节点,因为 tr 始终是 td 的直接父节点。您可以执行类似以下操作(请注意,这未经测试):

var parent = myTd.parentNode;
while(true) {
  if(parent == null) {
    return;
  }
  if(parent.nodeName === "TR") {
    return parent;
  }
  parent = parent.parentNode;
}
Keith Rousseau
2010-03-26

如果您在JavaScript中具有DOM元素,则可以使用.parentNode(),它将为您提供父节点,这应该是表行。然后您可以设置.classname

thecoshman
2010-03-26