Показать скрыть Div, если класс элемента загружен

Я хочу показать div, если загружен другой класс div. Показывать nanobar, только если класс selected загружен, в противном случае nanobar станет скрытым

пример кода css:

.nanobar {
  height: 75px;
  width: 100%;
  background: #fef9c7;
  border:1px solid #fce181;
  color:#333;
  padding:10px;
  margin-bottom:10px;
  font-size: 1.2rem;
  display:none;
}

Пример HTML-кода:

<div class = "nanobar">
<span>Content</span>
</div>
<div id = "category_container" class = "content-padding {if $category} selected{/if}"> </div>

любая помощь в этом отношении будет оценена по достоинству.

Что мешает вам делать то, что вы хотите? Что вы пробовали?

sjahan 02.04.2019 16:49

Я пытаюсь с этим w3schools.com/howto/howto_js_toggle_hide_show.asp

Martinovska 02.04.2019 16:50

Итак... что мешает вам использовать образцы этой страницы? Чтобы было ясно: на этом сайте мы не пишем для вас целую функцию бесплатно, мы помогаем вам найти и исправить ваши ошибки. Если кода нет, то и решения нет. Вы не можете просто прийти сюда и сказать: «Я хочу сделать это, как это сделать?». Вы должны показать свой глючный код и спросить, почему он не работает.

sjahan 02.04.2019 17:01

@sjahan Я новичок, если буду знать, то помощи не попрошу...

Martinovska 02.04.2019 17:04

Я прекрасно понимаю, что вы новичок. Дело в том, что даже если вы новичок, это не то место, где вы можете попросить кого-то другого сделать вашу работу/домашнюю работу. Вы можете показать свой код и спросить, почему это не работает, но вы не можете попросить кодировать других, чтобы они написали код вместо вас.

sjahan 02.04.2019 17:09
Поведение ключевого слова "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) для оценки ваших знаний,...
2
5
73
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Сначала проверьте, можете ли вы найти выбранный класс:

var selected = document.getElementsByClassName("selected");

Затем проверьте, имеет ли эта переменная более одного элемента.

if (selected.length < 1) {

// Hide your nanobar

} else {
// Show it
}

Это не полное решение, если у вас все еще есть проблемы, спрашивайте в комментариях.

Или, если вы хотите обнаружить только «выбранный» класс в этом конкретном div, if (document.getElementById("category_container").classList.c‌​ontains("selected"))‌​{ document.getElementsByClassName("nanobar")[0].style.display = "block"; }. Элементы имеют свойство classList, которое имеет метод contains (developer.mozilla.org/en-US/docs/Web/API/Element/classList)‌​. Метод getElementsByClassName (в данном случае объекта документа) возвращает NodeList, и мы используем [0] для получения первого (и, возможно, единственного) узла из списка (developer.mozilla.org/en-US/docs/Web/API/NodeList)

Cat 02.04.2019 17:28

Что ж, вы правы, но если это должно быть конкретным, я бы просто использовал идентификатор category_container и проверил, имеет ли он выбранный класс.

Wimanicesir 02.04.2019 17:39

Это то, что я сделал :) Я просто объяснял, как работает метод (и ссылался на почетный MDN) для OP, потому что они сказали, что они новые.

Cat 02.04.2019 17:47
Ответ принят как подходящий

Код проверяет, имеет ли второй div класс selected. Если это так, будет отображаться первый div, в противном случае первый div останется скрытым.

let divElements = document.querySelectorAll('div');

if (divElements[1].classList.contains("selected")) {
  divElements[0].classList.replace("hide", "show");
} else {
  divElements[0].classList.replace("show", "hide");
}
.nanobar {
  height: 75px;
  width: 100%;
  background: #fef9c7;
  border:1px solid #fce181;
  color:#333;
  padding:10px;
  margin-bottom:10px;
  font-size: 1.2rem;
}

.hide {
  display: none;
}
  
.show {
  display: block;
}
<div class = "nanobar hide">
  <p>Hello</p>
</div>
<div class = "apple jason selected hide">
  <p>Jason</p>
</div>

Примечание: Свойство отображения удалено из класса nanobar и превращено в отдельный класс. Упрощает скрытие и отображение элемента, а также возможность повторного использования его для других элементов.

Вы можете узнать больше о classListздесь

Хорошо, но на самом деле они пытаются скрыть «нанобар» и показать его, только если у другого div есть класс, называемый «выбранным». Лучший способ проверить это, вероятно, с classList.contains() вместо className=, чтобы разрешить более одного класса для элемента. Я также думаю, что выбор по tagName (например, .querySelectorAll("div")) может быть немного хрупким, а это означает, что если будет добавлен еще один div, это может сломать ваш код. Просто мои мысли.

Cat 02.04.2019 17:42

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

Charlie Wallace 02.04.2019 17:43

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