Доступ Javascript TR от TD
У меня есть строка таблицы, и в этом я имею td (что бы это ни было). Я хотел бы изменить атрибут класса TR моего TD, не используя идентификатор или имя. Например:
<tr>
<td onclick="[TR].setAttribute('class', 'newName')">My TD</td>
</tr>
Как мне это сделать?
Ответы
Ответ 1
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>
Ответ 2
В 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;
}
Ответ 3
если у вас есть элемент dom в javascript, вы можете использовать .parentNode(), после чего вы получите perant node, который должен быть строкой таблицы. то вы можете установить .className
Ответ 4
Если вы можете использовать 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;
}
Ответ 5
jQuery, вероятно, самый простой способ сделать это, вы можете использовать селектор, например:
$('table.mytable tr').addClass('red');
Чтобы добавить класс 'red' ко всем tr в table.mytable. Это только верхушка айсберга - проверьте, что он должен делать то, что вам нужно.
Ответ 6
Без каких-либо дополнительных рамок:
document.getElementById("theTableName").rows[1].cells[1].className = "someclassname";