Ваша проблема ограничена: вы не предоставляете контекст для document.getElementById("categories");
, то есть он просто выбирает первый элемент на странице с id
'категориями'.
Пока мы здесь, id
должно быть уникальным для страницы, так что вам лучше переключать все визуализированные несколько раз, чтобы использовать class
.
Чтобы использовать область действия события click, вы можете передать event
вфункция, которую мы можем использовать, чтобы найти, какую li
она переключает.
Итак, в вашем html:
<li onclick="showHide(event)">
И в вашей функции:
function showHide(e) {
var parentCategory = e.currentTarget
var categoryList = parentCategory.querySelector(".categories"); // << assuming you switch to using classes
if(!categoryList) { return }
if (categoryList.style.display === "none") {
categoryList.style.display = "block";
} else {
categoryList.style.display = "none";
}
}
Таким образом, вы ищете категории в нажатом li
,и вы должны увидеть это переключение, как и ожидалось.
Вы также можете немного уменьшить его, используя троицу, если используете es6:
function showHide(e) {
let categoryList = e.currentTarget.querySelector(".categories");
if(!categoryList) { return }
categoryList.style.display = categoryList.style.display === "none" ? "block" : "none"
}
Дайте мне знать, как вы поживаете,Если у вас есть какие-либо вопросы.