Доступ JavaScript TR от TD

У меня есть строка таблицы, и в этом, у меня есть td (независимо от того, что это обозначает). Я хотел бы изменить атрибут класса TR, в которой находится мой TD, не используя идентификатор или имя. Как этот:

<tr>
    <td onclick="[TR].setAttribute('class', 'newName')">My TD</td>
</tr>

Как я делаю это?

15
задан arik 21 June 2012 в 09:19
поделиться

6 ответов

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>
30
ответ дан 1 December 2019 в 01:05
поделиться

В 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;
}
14
ответ дан 1 December 2019 в 01:05
поделиться

Если вы можете использовать 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;
}
0
ответ дан 1 December 2019 в 01:05
поделиться

Без дополнительных фреймворков:

document.getElementById("theTableName").rows[1].cells[1].className = "someclassname";
-3
ответ дан 1 December 2019 в 01:05
поделиться

если у вас есть элемент dom в javascript, вы можете использовать .parentNode(), что даст вам узел perant, который должен быть строкой таблицы. затем вы можете установить .className

1
ответ дан 1 December 2019 в 01:05
поделиться

jQuery - вероятно, самый простой способ сделать это, вы можете использовать селекторы, такие как:

$('table.mytable tr').addClass('red');

Чтобы добавить класс 'red' ко всем tr в table.mytable. Это только вершина айсберга - проверьте, это должно сделать то, что вам нужно.

-3
ответ дан 1 December 2019 в 01:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: