Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Не удается получить значение элемента таблицы при клике на соседнюю ячейку (https://javascript.ru/forum/dom-window/62316-ne-udaetsya-poluchit-znachenie-ehlementa-tablicy-pri-klike-na-sosednyuyu-yachejjku.html)

yakim 04.04.2016 17:10

Не удается получить значение элемента таблицы при клике на соседнюю ячейку
 
Не удается получить значение элемента таблицы при клике на соседнюю ячейку.
Таблица выведена на страницу через ajax запрос к серверу. К ячейке привязана функция на клик:
<td id="td_name" onclick="click_td_name()">ООО "Вега"</td>

Функция:


function click_td_name() {
var id = this.parent().children().filter('#td_id').val();
alert(id);
};

Ошибка:

this.parent is not a function

Вижу что объект Window, но я вызвал из td.

Как правильно обратиться к объекту чтобы получить td, ну а потом через родителя выйти на другую ячейку?

рони 04.04.2016 17:35

yakim,
$(this)

Dilettante_Pro 06.04.2016 10:52

yakim,
<table>
<tr>
<td id="td_name" onclick="click_td_name(this);">ООО "Вега"</td>
<td style="display:none">Some Value in next cell</td>
</tr>
</table>
<script>
function click_td_name(elem) {
   var id = elem.id;
   alert(id);
   var valnext = elem.nextElementSibling.innerText;
   alert(valnext); 
};
</script>

yakim 07.04.2016 13:12

спс, работает
 
, работает, но не понятно почему нельзя обратиться на прямую

Dilettante_Pro 07.04.2016 13:52

Цитата:

Сообщение от yakim (Сообщение 413438)
, работает, но не понятно почему нельзя обратиться на прямую

Что значит - напрямую?
Вы же сами хотите - значение элемента таблицы при клике на соседнюю ячейку
var valnext = elem.nextElementSibling.innerText;

- это очень криво?

Dilettante_Pro 07.04.2016 14:06

Аналогичное решение на jQuery
<!DOCTYPE html >
<html>
<head>
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script>
    $(window).ready(function () {
        $('#td_name').on('click', function () {
            alert($(this).next().text());
        });
    });
</script>
</head>
<body>
   <table>
      <tr>
         <td id="td_name" >ООО "Вега"</td>
         <td style="display:none">Some Value in next cell</td>
      </tr>
   </table>
</body>
</html>


Часовой пояс GMT +3, время: 13:05.