【发布时间】:2021-07-06 08:37:46
【问题描述】:
当我浏览我的Razor-Pages 时,我需要更改导航栏链接颜色。我尝试使用JavaScript,但似乎每次转到另一个页面时页面都会重新呈现,我无法toggle我的元素。
这是我迄今为止尝试过的:
导航栏链接
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between ml-5">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link active-link" asp-area="" asp-page="/Index">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" asp-area="" asp-page="/Privacy">Privacy</a>
</li>
<li class="nav-item">
<a class="nav-link" asp-page="/Movies/Index">Movies</a>
</li>
<li class="nav-item">
<a class="nav-link" asp-page="/Genres/Index">Genres</a>
</li>
</ul>
</div>
site.js
const links = document.querySelectorAll('.nav-link');
let currentActive = document.querySelector('.active-link');
const changeClass = (e) => {
//e.preventDefault();
currentActive.classList.remove('active-link');
e.target.classList.add('active-link');
};
links.forEach((el) => el.addEventListener('click', changeClass));
在这里,我将当前的active link 保存在我的js 中,当我导航到另一个页面时,该页面会重新呈现,并且我的js 文件会再次重新加载,以便我之前的值设置回默认active link。
我找到了一个possible solution,但它似乎有点硬编码和工作,我相信应该有更好的方法。
附:理想情况下,使用JavaScript 的解决方案是最好的,但是,我不会在这里坚持任何事情。
【问题讨论】:
-
你在使用一些前端框架吗?还是纯 HTML 和 JS,每个实现的 html 页面中的 header 都在哪里?
-
好吧,我使用默认的 UI 设置
bootstrap,还有jquery,但是对于这个问题,我使用普通的js,因为我只是玩玩,想看看它对我即将到来的项目有何影响,以便我决定是否继续使用pure js或其他方式。
标签: javascript asp.net-core bootstrap-4 razor-pages