如何使用JavaScript(!important))从第一个li项中删除活动类,而另一个li项处于活动状态

如何使用JavaScript(!important))从第一个li项中删除活动类,而另一个li项处于活动状态,javascript,html,css,Javascript,Html,Css,我在一个只有JavaScript代码工作的老网站上工作。问题是:活动类正在工作,但当单击其他“li”时,li“Home”仍然处于活动状态。请建议JS中还需要添加哪些代码。提前谢谢! 守则如下: 函数setActive(){ aObj=document.getElementById('navmenu').getElementsByTagName('a'); 对于(i=0;i=0){ aObj[i].className='active'; } } } window.onload=setActive

我在一个只有JavaScript代码工作的老网站上工作。问题是:活动类正在工作,但当单击其他“li”时,li“Home”仍然处于活动状态。请建议JS中还需要添加哪些代码。提前谢谢! 守则如下:

函数setActive(){
aObj=document.getElementById('navmenu').getElementsByTagName('a');
对于(i=0;i=0){
aObj[i].className='active';
}
}
}
window.onload=setActive

使用
indexOf()
时,您正在测试
aObj[i].href
是否位于
document.location.href
中的任何位置,而不是测试它是否与路径完全匹配。由于
/
位于
/Home/Vision
中,因此测试成功。尝试与
document.location.pathname
进行精确匹配

函数setActive(){
aObj=document.getElementById('navmenu').getElementsByTagName('a');
对于(i=0;i


检查以下链接是否适用于您

function setActive(){aObj=document.getElementById('navmenu').getElementsByTagName('a');
对于(i=0;i=0){
aObj[i].className='active';
}
}
}
window.onload=setActive;

您试过调试它吗?你知道为什么会发生这种情况吗?你想知道如何在不使用JavaScript的情况下做到这一点吗?还有,
在哪里!重要信息
?如果可以的话,你想摆脱它,这会让事情变得更好:-)-不过,如果它是由于你目前无法控制的代码而存在的,那么这是harderThanks的建议Barmar。但是在用你的代码更改了我的代码之后,它根本不起作用!真的,我不知道该怎么办!!我犯了一个小错误,它是
.pathname
。当我使用调试器时,它说:setActive();未捕获的TypeError:无法读取null的属性“getElementsByTagName”。。。为什么?它找不到
id=“navmenu”
。确保拼写正确。是否动态添加导航菜单?错误消息表示
document.getElementById('navmenu')
正在返回
null
,只有在没有
navmenu
元素的情况下才会发生。谢谢Steevan。但我的问题还是一样!我们在JS中有类似removeclass(active)的代码吗?请建议!
function setActive(){aObj = document.getElementById('navmenu').getElementsByTagName('a');
    for (i = 0; i < aObj.length; i++) {
        if (document.location.href.indexOf(aObj[i].href) >= 0) {
            aObj[i].className = 'active';
         }
    }
}

window.onload = setActive;