Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Не работает display:="" (https://javascript.ru/forum/events/39976-ne-rabotaet-display-%3D.html)

fError 19.07.2013 17:43

Не работает display:=""
 
Список не хочет показываться обратно.
li ul.expandable { display: none }


var ul;
            if(objA.nextSibling.nextSibling.tagName == "UL"){//таким способом решил пропустить пробельные ноды
                ul = objA.nextSibling.nextSibling ;
                ul.style.display = '';
               
            }


Прикол в чём: если указать ul.style.display = "block\inline и т.д.", то всё работает. А я просто хочу отменить none.

devote 19.07.2013 18:02

поменяйте имя класса у элемента и тем самым оно отмениться

danik.js 19.07.2013 18:06

Так ты так стиль, прописанный через css не отменишь. Отменить его можно примерно так:

var rules = document.styleSheets[0].cssRules;
for (var i = 0; i < rules.length; i++) {
    if (rules[i].selectorText == 'li ul.expandable') {
        rules[i].style.display = '';
    }
}


А style объекта - это то, что находится в его атрибуте style. У тебя же этот атрибут пуст? Ну вот и style.display у тебя тоже пуст. Можешь перед присваиванием проверить.

devote 19.07.2013 18:19

Цитата:

Сообщение от danik.js
Отменить его можно примерно так:

не для всех браузеров этот код корректен

danik.js 19.07.2013 18:22

Цитата:

Сообщение от devote
не для всех браузеров этот код корректен

Я не призываю его использовать. Я просто пояснил. А решение - конечно же переопределять style.display либо менять css-класс.

fError 19.07.2013 18:33

Спасибо. Понятно. Не знал что нельзя отменять прописанное в CSS.
Что ж вы хотите, 2 дня учу JS =)
Переопределять style.display - имеется ввиду что то вроде: ??
window.onload = function(){
    var elements = document.getElementsByClass("expandable"); //понятно что не байкласс, а там bytagname - переборка элтов, иф атрибут class == expandable и т.д.
    for(var i = 0; i < elements.length ; i++){
        elements[i].style.display = "none";
    }
}


Хотя наверное есть более простой вариант

danik.js 19.07.2013 18:42

Цитата:

Сообщение от fError
Хотя наверное есть более простой вариант

Куда еще проще то?
Цитата:

Сообщение от fError
//понятно что не байкласс, а там bytagname - переборка элтов, иф атрибут class == expandable и т.д.

Так юзай document.querySelectoAll('ul.expandable') - это работает в IE8, поддержка которого пока еще актуальна. В IE7 уже не будет работать, но им сейчас уже никто не пользуется - все на него уже забили.

fError 19.07.2013 18:57

Ну что то в этом роде я и имел ввиду. Ещё раз спасибо.
Насчёт забили - ну смотря кто. Знакомый в госконторе работает - уже сделали проект, заказчик сказал переделывать под 6-й) Беларусь такая беларусь)

danik.js 19.07.2013 19:04

Не спорю, в некоторых случаях нужна более полная кроссбраузерность. Но я говорю про основную массу разработчиков.


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