Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Присвоение атрибута (https://javascript.ru/forum/offtopic/60384-prisvoenie-atributa.html)

blashyrkh 25.12.2015 19:41

Присвоение атрибута
 
Всем привет. Скажу сразу, что я на самой первой ступени изучения js и DOM. В процессе обучения пилю сайт. Нужна ваша помощь в таком вопросе. Есть элемент А(aside), имеющий два состояния, в первом из которых у него есть атрибут visibility, в другом его нет. Так же, есть элемент Б(tm-section). Задача состоит в том, чтобы элемент Б при первом состоянии элемента А приобретал padding-left со значением 100px. То что я накатал, конечно, не работает:
var nomenu = document.getElementsByTagName('aside');
                    
                    var contentPaddingLeft = document.getElementsByClassName(['tm-section']); 
                    
                    if(nomenu.getAttribute('visibility') === true) {
                        console.log("No padding");
                    } else {
                        contentPaddingLeft.setAttribute(['padding-left'], '100px');
                    };

EmperioAf 26.12.2015 12:12

советую использовать свойство display (у него лучше поддержка браузерами) и писать такие темы в раздел "Элементы интерфейса" или в "Общие вопросы javascript". Если бы вы написали в одних из этих разделов то ответ бы получили ещё вчера.

Вы печатаете в консоль и должны были увидеть там 2 ошибки. Они говорят вам о том, что переменные nomenu и contentPaddingLeft являются коллекциями, а вам нужен в этих коллекциях определённый элемент (нулевой скорее всего)
Также интересные вещи происходят при сравнении:
метод getAttribute выдаст вам строку. Причем выдаст то, что записано в атрибуте элемента. Т.е. для элемента
<aside visibility="nbufgd"></aside>


выдаст строку nbufgd
А дальше идёт сравнение строки с булевым значением true, и у меня для вас плохие новости:

alert('true' === true)


alert('true' == true)


короче говоря ваш скрипт должен был выглядеть примерно так:
var nomenu = document.getElementsByTagName('aside')[0];
                     
                    var contentPaddingLeft = document.getElementsByClassName(['tm-section'])[0];
                     
                    if(nomenu.getAttribute('visibility') === 'true') {
                        console.log("No padding");
                    } else {
                        contentPaddingLeft.setAttribute(['padding-left'], '100px');
                    };

blashyrkh 27.12.2015 14:11

Спасибо, огромное! К сожалению не заработало, буду дальше колдовать))

Deff 27.12.2015 14:47

Цитата:

Сообщение от blashyrkh
К сожалению не заработало,

Для полноценной помощи нун приводить полный код HTML для кнопки и скрипта к ней
Либо ссылку на тестовую демо страницу,
Либо на заливку демки в песочницу

Mаxmaxmаximus 28.12.2015 14:16

то чувство когда чел не юзает MVC))))) и состояние хранит во вьюхе


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