Javascript从TD访问TR

时间:2010-03-26 15:16:18

标签: javascript html dom

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

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

我该怎么做?

6 个答案:

答案 0 :(得分:30)

td代表表格数据..

现在..在您的情况下,您需要parentNode的<{1}}属性..

td

或bobince在他的评论中提出

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

答案 1 :(得分:13)

在jquery中,如果您对td:

有引用,那将非常简单
$(this).closest('tr');

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

var parent = myTd.parentNode;
while(true) {
  if(parent == null) {
    return;
  }
  if(parent.nodeName === "TR") {
    return parent;
  }
  parent = parent.parentNode;
}

答案 2 :(得分:1)

如果你在javascript中有dom元素,你可以使用.parentNode()然后它会给你perant节点,它应该是表行。然后你可以设置.className

答案 3 :(得分:0)

如果你可以使用jQuery,它可能是这样的

$("yourtdselector").closest("tr").attr("class","classname");

代码

<tr>
    <td onclick="changeClass(this,'classname')">My TD</td>
</tr>

function changeClass(elem, class)
{
    elem.parentNode.className = class;
}

答案 4 :(得分:-3)

jQuery可能是最简单的方法,您可以使用以下选择器:

$('table.mytable tr').addClass('red');

向table.mytable中的所有tr添加一个'red'类。这只是冰山一角 - 检查它应该做你需要的。

答案 5 :(得分:-3)

没有任何额外的框架:

document.getElementById("theTableName").rows[1].cells[1].className = "someclassname";