我有一个表格行,在其中,我有一个td(无论它代表什么)。我想在不使用ID或名称的情况下更改我的TD所在的TR的class属性。像那样:
<tr>
<td onclick="[TR].setAttribute('class', 'newName')">My TD</td>
</tr>
我该怎么做?
答案 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";