我有一个表格行,其中有一个td(无论它代表什么)。我想改变TR的TD类属性,而不使用ID或名称。像这样:来自TD的Javascript访问TR
<tr>
<td onclick="[TR].setAttribute('class', 'newName')">My TD</td>
</tr>
我该怎么做?
我有一个表格行,其中有一个td(无论它代表什么)。我想改变TR的TD类属性,而不使用ID或名称。像这样:来自TD的Javascript访问TR
<tr>
<td onclick="[TR].setAttribute('class', 'newName')">My TD</td>
</tr>
我该怎么做?
td
代表表数据..
现在..你的情况,你所需要的td
的parentNode
属性..
<tr>
<td onclick="this.parentNode.setAttribute('class', 'newName')">My TD</td>
</tr>
或bobince在他的建议评论
<td onclick="this.parentNode.className= 'newName'">My TD</td>
+1用于解决使用ID(如问题请求)或依靠Jquery – thecoshman 2010-03-26 15:26:31
完美! 表格数据...我明白了。谢谢! – arik 2010-03-26 16:16:13
'setAttribute('class')'在IE6-7中无法正常工作。出现这种情况的原因有很多,IE浏览器出错了:避免在HTML文档中使用'getAttribute' /'setAttribute'。相反,使用DOM级别1的HTML属性:'this.parentNode.className ='newName''更具兼容性和可读性。 – bobince 2010-03-26 17:22:13
jQuery大概是这样,您就可以使用选择,如最简单的方法:
$('table.mytable tr').addClass('red');
要table.mytable一类的“红色”的添加到所有TR的。这只是冰山一角 - 请检查它应该做你需要的。
$(this).closest('tr');
如果你真的不想承担jQuery的依赖,那么你可能只是做一个循环获取:
这实际上并没有回答这个问题。你基本上只是告诉他去看看如何使用jQuery。没有用处。 – 2010-03-26 15:31:43
在jQuery的,如果你有关于你的TD这将是非常简单的parentNode并将其检查为更通用的解决方案。在这种情况下,你可以获得父节点,因为tr总是td的直接父节点。你可以做这样的事情(注意,这是未测试):
var parent = myTd.parentNode;
while(true) {
if(parent == null) {
return;
}
if(parent.nodeName === "TR") {
return parent;
}
parent = parent.parentNode;
}
是的,我确定答案注意我的是一个更通用的脚本。 – 2010-03-26 15:29:48
应该是parent.nodeName ===“TR”而不是父级。nodeName =“TD” – Ms2ger 2010-03-26 16:21:00
如果你可以使用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;
}
无任何额外的框架:
document.getElementById("theTableName").rows[1].cells[1].className = "someclassname";
这不是基于td得到的。 – 2010-03-26 15:27:08
如果你在javascript中有dom元素,你可以使用.parentNode()然后它会给你perant节点,这应该是表行。然后就可以设置.className
它实际上是parentNode。 – 2010-03-26 15:33:13
谢谢,更新。 – thecoshman 2010-03-29 09:51:18
在javascript中它只是:** document.getElementById(“someTDitem”)。parentNode.style.background ='#77dd77'; ** – Fattie 2014-01-20 17:14:52
标记是表数据 – thecoshman 2010-03-26 15:21:12
令人惊讶的是许多答案也水涨船高straigh t for jQuery(尽管这是即使在普通的旧DOM中最简单可能的事情),然后仍然是语法错误! – bobince 2010-03-26 17:24:41
这是因为在给出一些问题后答案已经改变。 – Joop 2010-03-29 05:51:09