Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.07.2016, 01:24
Интересующийся
Отправить личное сообщение для Grendel Посмотреть профиль Найти все сообщения от Grendel
 
Регистрация: 20.04.2011
Сообщений: 18

Чтение параметра из 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-файла.

Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 20.07.2016, 01:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

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
Ответить с цитированием
  #3 (permalink)  
Старый 20.07.2016, 08:07
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Для 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')  
}
Ответить с цитированием
  #4 (permalink)  
Старый 20.07.2016, 08:20
Интересующийся
Отправить личное сообщение для Grendel Посмотреть профиль Найти все сообщения от Grendel
 
Регистрация: 20.04.2011
Сообщений: 18

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

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

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

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

Удачи всем =)

Последний раз редактировалось Grendel, 20.07.2016 в 08:26. Причина: добавлено
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение данных из файла в массив TheSingleElk Общие вопросы Javascript 2 16.06.2016 01:09
изменение файла css с помощью js Chimmi Общие вопросы Javascript 3 28.05.2015 11:09
Чтение из тектового файла Jackky Общие вопросы Javascript 14 30.06.2012 01:00
Подключение внешних таблиц из css файла chippolino (X)HTML/CSS 14 30.04.2010 12:36
Доступ к input или css файла bobroff jQuery 7 22.12.2009 22:21