Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Проблема с доступом к атрибутам <td> (https://javascript.ru/forum/dom-window/62889-problema-s-dostupom-k-atributam-td.html)

maxapet 06.05.2016 09:49

Проблема с доступом к атрибутам <td>
 
Мне нужно поменять класс у ячейки таблицы. Хотел использовать toggleClass, но он не работает. Попробовал добраться что из себя представляет attr вот таким образом:
function selectLead(no){
    alert($("#selTbl td")[selectedLeadNo - 1].attr);
}

Получаю сообщение undefined, хотя должен бы увидеть код функции attr. При этом доступ к тексту ячейки через innerText есть. Т.е. вот такая функция при клике по ячейке выводит её содержимое:
function selectLead(no){
    alert($("#selTbl td")[selectedLeadNo - 1].innerText);
}

И, естественно, класс влияет на отображение ячейки.
Атрибуты других контролов вполне себе доступны.
В чём может быть дело? Почему недоступны именно атрибуты ячеек таблицы?

рони 06.05.2016 10:01

Цитата:

Сообщение от maxapet
хотя должен бы увидеть код функции attr

у элемента нет никаких attr, это есть только у обьекта jquery.
Цитата:

Сообщение от maxapet
Хотел использовать toggleClass, но он не работает.

работает!!!
Цитата:

Сообщение от maxapet
В чём может быть дело?

где код смены класса?

maxapet 06.05.2016 10:17

"у элемента нет никаких attr, это есть только у обьекта jquery" - строго говоря, Вы правы, но посему вот такой код:
function selectLead(no){
                alert($("#div1")attr);
}

выводит код функции attr, а вот такой
function selectLead(no){
    alert($("#selTbl td")[selectedLeadNo - 1].attr);
}

выводит undefined?
Вот код для переключения класса css:
function selectLead(no){
    $("#selTbl td")[selectedLeadNo - 1].toggleClass("lead-selector-active").toggleClass("lead-selector-inactive");
}

рони 06.05.2016 10:36

Цитата:

Сообщение от maxapet
$("#selTbl td")

это обьект
Цитата:

Сообщение от maxapet
$("#selTbl td")[selectedLeadNo - 1]

это элемент, при наличии элемента с таким индексом

рони 06.05.2016 10:39

maxapet,
возможно вы хотели так

function selectLead(){ 
    $("#selTbl td").eq(selectedLeadNo-1).toggleClass("lead-selector-active lead-selector-inactive"); 
}

maxapet 06.05.2016 11:36

Спасибо, так, действительно, работает! :)
"это элемент, при наличии элемента с таким индексом" - элемент в смысле дерева DOM? Т.е. это не объект jQuery, да?

рони 06.05.2016 11:58

maxapet,
под числовыми индексами в обьекте jQuery находятся выбранные!!! элементы, если такие нашлись.

maxapet 06.05.2016 14:27

Спасибо большое за помощь!


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