Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Чтение параметра из CSS файла (https://javascript.ru/forum/misc/64102-chtenie-parametra-iz-css-fajjla.html)

Grendel 20.07.2016 01:24

Чтение параметра из CSS файла
 
Доброго времени.

Подскажите, как прочитать параметр из css файла. Меню сайта скрыто параметром - display:none; . По клику оно открывается, все просто. Функция тоже простейшая -

function open_div(id) {
    var elem = document.getElementById(id);
    
    if (elem.style.display=='none') {
        elem.style.display = '';
    }
    else {
        elem.style.display = 'none';
    }
}


Если прописать в теге div параметр - style="display:none"; - то все отлично работает. Но в текущей задаче нельзя прописать такое значение, его нужно получить из css-файла.

Спасибо.

рони 20.07.2016 01:38

Grendel,
что мешает поменять условие ...
function open_div(id) {
    var elem = document.getElementById(id);
    if (elem.style.display) {
      elem.style.display = '';
    }
    else {
       elem.style.display = 'block';
    }
}

и прочитайте это https://learn.javascript.ru/styles-and-classes

warren buffet 20.07.2016 08:07

Для css, в котором уже есть display:block у элемента, команда display='' будет тождественна команде display='block', поэтому командовать надо явно:

elem.style.display=(elem.style.display=='block')?'none':'block';


Или нарисовать в глобальном файле стилей нечто вроде

d-block{display:block!important;}


И втыкать его через

elem.classList.toggle('d-block');


Что сразу открывает способ скрыть все открытое таким стилем

function hide_all(){
   var elems=document.querySelectorAll('d-block');
   for var(i=0,el;el=elems[i];i++)
       el.classList.remove('d-block')  
}

Grendel 20.07.2016 08:20

Спасибо, рони)), то что нужно. И статью тоже спасибо.

Можно было бы воспользоваться - getComputedStyle(elem).display, но твой вариант проще.

================================================== ==========================

warren buffet, спасибо за подробное пояснение)), с тернарным оператором функция еще короче))

Удачи всем =)


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