Javascript доступ TR от TD - PullRequest
       21

Javascript доступ TR от TD

15 голосов
/ 26 марта 2010

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

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

Как мне это сделать?

Ответы [ 6 ]

30 голосов
/ 26 марта 2010

td обозначает данные таблицы.

сейчас .. в вашем случае вам нужно parentNode свойство td ..

<tr>
<td onclick="this.parentNode.setAttribute('class', 'newName')">My TD</td>
</tr>

или, как предложил Бобинс в своем комментарии

<td onclick="this.parentNode.className= 'newName'">My TD</td>
14 голосов
/ 26 марта 2010

В jquery было бы очень просто, если бы у вас была ссылка на ваш тд:

$(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;
}
1 голос
/ 26 марта 2010

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

0 голосов
/ 26 марта 2010

Без каких-либо дополнительных рамок:

document.getElementById("theTableName").rows[1].cells[1].className = "someclassname";
0 голосов
/ 26 марта 2010

Если вы можете использовать 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 голосов
/ 26 марта 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...