Как запретить закрывать и открывать боковую панель при нажатии на ссылку

#javascript #function #toggle

#javascript #функция #переключение

Вопрос:

У меня есть две функции. Первый закрывает боковую панель при прокрутке, а второй открывает ее при наведении курсора мыши. Проблема в том, что когда я нажимаю на одну из ссылок, и она переводит меня на новую страницу, боковая панель быстро закрывается и открывается. Я хочу, чтобы это не делало этого при нажатии на любую из ссылок. Я надеюсь, что это нормально. Я все еще пытаюсь задавать вопросы здесь.

 let prevScrollpos = window.pageYOffset;

window.onscroll = function() {
var currentScrollPos = window.pageYOffset;
prevScrollpos > currentScrollPos ? document.getElementById("navbar").style.left = "0" : document.getElementById("navbar").style.left = "-8vw"
prevScrollpos = currentScrollPos;
}

navbar.onmouseover = function () {
if (navbar = "0px") {
document.getElementById("navbar").style.left = "0px";
}
}
 

Комментарии:

1. if (navbar = "0px") { вероятно, предполагается, что это что-то вроде if (navbar.style.left == "0px") {

2. Что еще более важно: куда ведут эти ссылки? Я полагаю, где-то на той же странице?

3. Функция и так работает нормально. Его цель — открыть панель навигации при наведении курсора мыши. Проблема в том, что она борется с функцией top. Поскольку один сообщает ему, что когда вы переходите на новую страницу, закройте панель навигации, но поскольку мышь все еще находится над ней, она снова вытаскивает ее. Итак, две функции находятся в состоянии войны. Мне нужна функция, которая говорит, что если вы нажмете на ссылку, панель навигации останется открытой, если это имеет смысл. Я просто не уверен, как это сделать.

4. Да, вы правы. Это всего лишь одностраничный веб-сайт портфолио. С помощью Home, About, Skills и так далее.

5. Функция «работает нормально» по чистой случайности; if (navbar = «0px») бессмысленна более чем одним способом. navbar это HTMLЭлемент, а не строка, возможно, равная «0px». Если бы вы использовали правильный оператор для сравнений ( == ), этот тест всегда был бы неудачным. Поскольку вместо этого вы используете оператор присваивания, тест никогда не завершится неудачей, потому что ваш код будет а) перезаписан navbar с "0px" помощью , б) вычислен if (navbar) с navbar "0px" помощью , т. Е. истинного значения. Но не имеет значения, что тест никогда не завершается неудачей, потому что установка style.left в 0 всегда должна происходить в любом случае.