Показать сообщение отдельно
  #2 (permalink)  
Старый 03.06.2019, 15:56
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Вы написали лишнюю точку с запятой!
<button class="bab">Кнопка</button>
<div class="box" style="display: none"> Содержимое </div>

<button class="bab">Кнопка</button>
<div class="box" style="display: none"> Содержимое 2</div>

<script>

let coll = document.getElementsByClassName("bab");
for (i = 0; i < coll.length; i++) {
	coll[i].addEventListener("click", function() {
		let box = this.nextElementSibling;
		if (box.style.display == "none") {
			box.style.display = "block";
		} else {
			box.style.display = "none";
		}
	});
}

</script>


Ваше решение не учитывает то, что могут быть удалены или добавлены элементы!

Вот учитывает...
<button class="bab">Кнопка</button>
<div class="box" hidden> Содержимое </div>

<button class="bab">Кнопка</button>
<div class="box" hidden> Содержимое 2</div>

<script>

addEventListener("click", function(event) {
	if (!event.target.matches(".bab")) return;

	const box = event.target.nextElementSibling;
	box.hidden ^= true;
});

</script>


Также можно использовать элемент summary...
<details>
	<summary class="bab">Кнопка</summary>
	<div class="box"> Содержимое </div>
</details>

<details>
	<summary class="bab">Кнопка</summary>
	<div class="box"> Содержимое 02</div>
</details>
Ответить с цитированием