2 回答

TA貢獻1821條經(jīng)驗 獲得超5個贊
您可以使用querySelectorAllalong withforEach來獲取所有內(nèi)容.navbar__links并在您將其放入視圖highlight中時從它們中刪除類。resizewindowmobile
您的代碼也在生成控制臺errors,因為您試圖remove從element單擊菜單項時不存在的類進行分類,并且window < 768
//Remove class from others when click on li
if (elem && window.innerWidth < 768 || elem) {
elem.classList.remove('highlight');
}
在調(diào)整大小功能上使用此代碼:
//on resize
window.addEventListener('resize', function(event) {
const links = document.querySelectorAll('.navbar__links');
links.forEach(function(x) {
if (window.innerWidth < 768) {
x.classList.remove('highlight'); //remove highlught class
}
})
});
我已經(jīng)修復了你的問題code并且正在按預期工作。
現(xiàn)場演示:
const menu = document.querySelector('#mobile-menu');
const menuLinks = document.querySelector('.navbar__menu');
const activeMenu = e => {
const elem = document.querySelector('.highlight');
// adds 'highlight' class to my menu item here
if (window.innerWidth > 768) {
e.target.classList.add('highlight');
}
//Remove class from others when click on li
if (elem && window.innerWidth < 768 || elem) {
elem.classList.remove('highlight');
}
};
//Click event on li
menuLinks.addEventListener('click', activeMenu);
//on resize
window.addEventListener('resize', function(event) {
const links = document.querySelectorAll('.navbar__links');
links.forEach(function(x) {
if (window.innerWidth < 768) {
x.classList.remove('highlight'); //remove highlught class
}
})
});
.highlight {
background: red;
}
<ul class="navbar__menu">
<li class="navbar__item">
<a href="#home" class="navbar__links" id="homePage">Home</a>
</li>
<li class="navbar__item">
<a href="#about" class="navbar__links" id="about-us">About
Us</a>
</li>
<li class="navbar__item">
<a href="#services" class="navbar__links" id="service">Services</a>
</li>
<li class="navbar__btn">
<a href="#sign-up" class="button navbar__links" id="signup">Sign Up</a>
</li>
</ul>

TA貢獻1836條經(jīng)驗 獲得超3個贊
解決方案:
function activeMenu(e) {
let links = document.querySelectorAll('.navbar__links');
if (window.innerWidth > 768) {
links.forEach(link => {
link.classList.remove("highlight");
})
e.classList.add("highlight");
} else {
e.classList.remove("highlight");
}
}
.highlight {color:red !important}
<div id="mobile-menu">#mobile-menu</div>
<div class="navbar__menu">
<div onclick="activeMenu(this)" class="navbar__links">navbar__links</div>
<div onclick="activeMenu(this)" class="navbar__links">navbar__links</div>
<div onclick="activeMenu(this)" class="navbar__links">navbar__links</div>
</div>
添加回答
舉報