У меня есть строка таблицы, и в этом, у меня есть td (независимо от того, что это обозначает). Я хотел бы изменить атрибут класса TR, в которой находится мой TD, не используя идентификатор или имя. Как этот:
<tr>
<td onclick="[TR].setAttribute('class', 'newName')">My TD</td>
</tr>
Как я делаю это?
td
обозначает данные таблицы ..
сейчас .. в вашем случае вам понадобится свойство parentNode
для td
..
<tr>
<td onclick="this.parentNode.setAttribute('class', 'newName')">My TD</td>
</tr>
или как bobince предложено в его комментарии
<td onclick="this.parentNode.className= 'newName'">My TD</td>
В 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;
}
Если вы можете использовать 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";
если у вас есть элемент dom в javascript, вы можете использовать .parentNode(), что даст вам узел perant, который должен быть строкой таблицы. затем вы можете установить .className
jQuery - вероятно, самый простой способ сделать это, вы можете использовать селекторы, такие как:
$('table.mytable tr').addClass('red');
Чтобы добавить класс 'red' ко всем tr в table.mytable. Это только вершина айсберга - проверьте, это должно сделать то, что вам нужно.