Javascript li类活动页
我可以用我在导航菜单a中编写的代码添加它,但我想将它添加到li类而不是a href。我希望这个事件从页面的开头开始 通常,当我现在这样使用它时,页面不会写为活动状态。如果你能帮忙,我会很高兴的Javascript li类活动页,javascript,html,Javascript,Html,我可以用我在导航菜单a中编写的代码添加它,但我想将它添加到li类而不是a href。我希望这个事件从页面的开头开始 通常,当我现在这样使用它时,页面不会写为活动状态。如果你能帮忙,我会很高兴的 函数更新单元(url){ const active=document.querySelector('.main menu a.active'); 如果(活动!==null){ active.classList.remove('active'); } const links=Arr
函数更新单元(url){
const active=document.querySelector('.main menu a.active');
如果(活动!==null){
active.classList.remove('active');
}
const links=Array.from(document.querySelectorAll('.main menu a'));
const index=links.map(link=>link.href).findIndex((href)=>{
返回url.indexOf(href)!=-1;
});
如果(索引!=-1){
链接[index].classList.add('active');
}
}
barba.hooks.before((数据)=>{
updateNu(data.trigger.href);
});
您可以在列表项中循环,抓住列表项中的锚点,比较URL并根据需要将活动类添加到列表项中,而不是在锚点之间循环
为此,不需要map
,您可以使用普通的foreach
和if
语句
<div class="middle_right right header_side">
<div class="header_side_container">
<div class="header_builder_component header_builder_menu_component">
<nav class="main-menu main_menu_container menu_line_enable">
<ul id="menu-main-menu" class="menu">
<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1032">
<a href="home.php"><span>Home</span></a>
</li>
<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1033">
<a href="videos.php"><span>videos</span></a>
</li>
<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1034">
<a href="gallery.php">
<span>gallery</span>
</a>
</li>
<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1035">
<a href="about.php">
<span>about</span>
</a>
</li>
<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1036">
<a href="contact.php">
<span>contact</span>
</a>
</li>
</nav>
</div>
</div>
</div>
function updateMenu(url) {
const active = document.querySelector('.menu-item.active');
if (active !== null) {
active.classList.remove('active');
}
const links = Array.from(document.querySelectorAll('.menu-item'));
links.forEach(function(li){
let anchor = li.querySelector("a");
if(url.indexOf(anchor.href) > -1){
li.classList.add("active");
}
});
}
updateMenu(window.location.href);
/* barba.hooks.before((data) => {
updateMenu(data.trigger.href);
});
*/
函数更新单元(url){
const active=document.querySelector('.menu item.active');
如果(活动!==null){
active.classList.remove('active');
}
const links=Array.from(document.querySelectorAll('.menu项');
links.forEach(函数(li){
设anchor=li.querySelector(“a”);
if(url.indexOf(anchor.href)>-1){
li.classList.add(“活动”);
}
});
}
updateMenu(window.location.href);
/*barba.hooks.before((数据)=>{
updateNu(data.trigger.href);
});
*/
谢谢您的回答,但是当您编写时,没有代码删除事件。活动类仍保留在我单击的li类中。谢谢,但您的答案没有根据打开页面时打开的URL激活。@KaanDemir我通过禁用您的barba
代码更新了我的答案,并在另一个调用中添加了updateMenu
我接受了您的答案。嗯,如果我在它下面使用BABA会有问题吗?@KaanDemir我不知道BABA代码是什么,但是如果它通过了正确的href,你可以使用它而不是调用updateMenu(window.location.href)代码>。