#javascript #dom
#javascript #dom
Вопрос:
Итак, я хотел закодировать простую вещь на javascript, у меня есть отзывчивая панель навигации с кнопкой гамбургера:
<input type="checkbox" id="check" onclick="validate()">
<label for="check" class="checkbtn">
<i class="fas fa-bars"></i>
</label>
Я хотел остановить прокрутку всякий раз, когда активно меню гамбургера. Итак, я написал этот код javascript:
<script type="text/javascript">
function validate() {
var element = document.getElementByTagName("body")[0];
if (document.getElementById('check').checked){
element.classList.add("noscroll");
}
}
И, конечно, я добавил .noscroll{ overflow: hidden; }
в файл css.
По какой-то причине это не сработало, и я надеюсь, что вы, ребята, поможете мне определить.
Комментарии:
1. Добавлен ли класс в тело?
2. Нет, он не добавлен.
3. Когда вы отлаживаете код, у вас всегда должна быть открыта консоль разработчика, чтобы вы могли искать ошибки, выдаваемые браузером. В этом случае ваш код, вероятно, выдает
document.getElementByTagName is not a function
ошибку, поскольку функцияgetElementsByTagName
. Я бы посоветовал поискать в Интернете «отладку javascript», чтобы добавить в свой набор навыков.4. Как уже упоминалось, getElementByTagName не существует. Более простой способ получить доступ к телу
document.body
.
Ответ №1:
Самый короткий ответ, надеюсь, это поможет
const body = document.body;
body.classList.add("MyClass");
Комментарии:
1. Не
document.body.classList.add('MyClass')
было бы короче?2. да, но я был в середине функционального подхода, кстати, тот же результат, а ваш короче