Доступ 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";