我有一個表格行,其中有一個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