Javascript从TD访问TR

ari*_*rik 15 html javascript dom

我有一个表行,在其中,我有一个td(无论它代表什么).我想在不使用ID或名称的情况下更改我的TD所在的TR的class属性.像那样:

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

我该怎么做?

Gab*_*oli 30

td 代表表格数据..

现在..在你的情况下你需要的parentNode属性td..

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

或者像他在评论中提到的那样

<td onclick="this.parentNode.className= 'newName'">My TD</td>
Run Code Online (Sandbox Code Playgroud)

  • `setAttribute('class')`在IE6-7中不能正常工作.IE有很多属性错误:因此在HTML文档中避免使用`getAttribute` /`setAttribute`.相反,使用DOM Level 1 HTML属性:`this.parentNode.className ='newName'`更兼容,更易读. (6认同)

Kei*_*eau 14

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

$(this).closest('tr');
Run Code Online (Sandbox Code Playgroud)

如果你真的不想依赖于jQuery,那么你可以做一个循环来获取parentNode并将它的类型检查为更通用的解决方案.在这种情况下,您可以获取parentNode,因为tr始终是td的直接父级.你可以做这样的事情(注意这没有经过测试):

var parent = myTd.parentNode;
while(true) {
  if(parent == null) {
    return;
  }
  if(parent.nodeName === "TR") {
    return parent;
  }
  parent = parent.parentNode;
}
Run Code Online (Sandbox Code Playgroud)