Как получить значение CSS из JS?

Я делаю адаптивный дизайн и использую @Media для настройки CSS в зависимости от размера экрана. Я установил значение css, называемое

.dskcell { дисплей: нет; }

и установите для него значение none, если носитель небольшой, в противном случае display: normal. Что я хочу знать, как получить отображаемое значение dskcell в чистом Javascript?

Я вижу getComputedStyle, но похоже, что ему нужен элемент HTML, который на некоторых страницах не используется css. Как я могу узнать, какое отображаемое значение dskcell отображается в JS?

Обновлено:

<ul id = "mnu" class = "page dskcell">

В Javascript мне нужно знать, скрыт он или показан, поэтому я хочу узнать, каково отображаемое значение dskcell.

Дело не в том, что «ценность класса — это что-то». Эти значения применяются к элементам на основе селекторов и медиа-запросов. Вы можете осмысленно оценить их только на конкретном элементе. Чтобы узнать размер экрана в Javascript, вам вообще не нужен CSS; просто проверьте соответствующее свойство Javascript.

deceze 22.12.2020 20:55

возможно, если вы поделитесь достаточным количеством кода, демонстрирующего вашу проблему, вы сможете получить эффективную помощь, и это может объяснить, почему getComputedStyle не работает для вас. если вы не использовали его должным образом. если нет .dskcell, то вы не должны получать никакого значения. developer.mozilla.org/en-US/docs/Web/API/Window/…

G-Cyrillus 22.12.2020 20:58

попробуйте: document.querySelector('#mnu').style.display; ИЛИ document.getElementById('mnu').style.display; Вы также вызываете выбор классов с помощью querySelector, просто замените «#» на «.». .

ValeriF21 22.12.2020 21:06

из моего предыдущего комментария: вот что я имею в виду: jsfiddle.net/umokv29d и jsfiddle.net/umokv29d/1 Вам нужно проверить, сброшено ли отображение по умолчанию или нет. Если он установлен/сброшен, то у вас есть значение, которое вы можете использовать. если нет, применяется значение по умолчанию (ul — это блок, span — встроенный, li — элемент списка и т. д.)

G-Cyrillus 22.12.2020 21:17

Так что же вы действительно хотите сделать? Выяснить, отображается ли элемент или нет? И исходя из этого, что вы хотите сделать?

deceze 22.12.2020 21:24

Что я действительно хотел сделать, так это то, что если .dskcell был пустым, то не заполнять меню, а вместо этого заполнять другое меню.

MiscellaneousUser 22.12.2020 21:29
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
6
2 290
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вот способ проверить с помощью чистого javascript, отображается ли элемент dskcell. Если применяется медиа-запрос (или элемент dskcell отсутствует), dskcellIsDisplayed будет ложным (в противном случае будет истинным).

document.addEventListener('DOMContentLoaded', () => {
  const elem = document.querySelector('.dskcell');
  const dskcellIsDisplayed = elem && window.getComputedStyle(elem, null).getPropertyValue("display") !== 'none';
  console.info(dskcellIsDisplayed);
});
div {
  border: 1px solid red;
}

body {
  background-color: lightgreen;
}

@media only screen and (max-width: 800px) {
  .dskcell {
    display: none;
  }
  body {
    background-color: lightblue;
  }
}
<div class = "dskcell"></div>

@MiscellaneousUser Судя по вашему вопросу, вы уже должны были знать об этом методе…‽

deceze 22.12.2020 21:25

Я знал о getComputedStyle, но не мог заставить его работать. Я пытался смотреть на css, а не на элементы, поэтому я обесценил команду. В конце концов, я выбрал другой подход и использовал этот метод.

MiscellaneousUser 22.12.2020 21:28

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

if (window.innerWidth > 1200 ) {
    const el = document.querySelector('.el');
    el.style.display = 'none';
} else {
    el.style.display = 'block';
}

Или с вычислением: Вы говорите, что не все элементы имеют имя класса «.dskcell». Что ж, добавить еще один класс ко всем из них?

const element = document.querySelector('.element')
const style = getComputedStyle(element).display
console.info(style) // expected: block / none

Если вам действительно нужно значение... В качестве последней вещи в списке, поскольку вы знаете начальное значение, которое вы установили в css, вы можете создать объект, который содержит данные вашего компонента, поскольку вы просто хотите переключаться между блоком и ни одним, вы знаете все возможные значения...

Другие вопросы по теме