【发布时间】:2020-06-03 14:23:33
【问题描述】:
我有一个功能可以在点击时更改我的菜单项的颜色。这工作正常,但不知何故我把它弄坏了,不知道怎么弄。
单击时菜单项颜色不变。没有错误。
我正在 Chrome 上进行测试。它在生产环境和本地主机上都不起作用。
我想我一定是在某处遗漏了一个 jQuery 脚本...任何想法都值得赞赏...
标题:
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<link rel="stylesheet" href="~/css/style.css" />
主体:
<div class="navbar-collapse collapse">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item" onclick="changeactive('Home')">
<a class="nav-link" asp-area="" asp-controller="Home" asp-action="Index">@_loc[Model.NavBarHome]</a>
</li>
<li class="nav-item" onclick="changeactive('Features')">
<a class="nav-link" asp-area="" asp-controller="Features" asp-action="Features">@_loc[Model.NavBarFeatures]</a>
</li>
</div>
CSS:
.normal-item {
color: green !important;
}
.active-item {
color: rgba(255, 140, 0, 0.781) !important
}
JS:
function changeactive(pname) {
Debug.writeln("hello");
sessionStorage.setItem("activepage", pname);
}
$(function () {
var pname = sessionStorage.getItem("activepage");
switch (String(pname)) {
case "Home":
$("ul.navbar-nav li.nav-item:nth-child(1) a").addClass("active-item");
$("ul.navbar-nav li.nav-item:nth-child(2) a").addClass("normal-item");
break;
case "Features":
$("ul.navbar-nav li.nav-item:nth-child(1) a").addClass("normal-item");
$("ul.navbar-nav li.nav-item:nth-child(2) a").addClass("active-item");
break;
default:
$("ul.navbar-nav li.nav-item:nth-child(1) a").addClass("normal-item");
$("ul.navbar-nav li.nav-item:nth-child(2) a").addClass("normal-item");
break;
}
})
【问题讨论】:
-
请解释究竟是什么不起作用。您遇到了哪些错误以及缺少哪些功能?
-
单击时菜单项颜色不变。没有错误。问题已修改。
-
我没有看到任何调用你的匿名函数的东西,也许让那个函数成为被调用函数?
-
好吧,你是
onclick监听器调用changeactive函数。但这只会更新会话存储密钥。导航发生时是否应该运行其他功能? -
header部分有'[snip]',如果没有必要可以考虑去掉。要在单击的菜单项上应用颜色,您可以提供 id 或 class,然后添加 CSS 属性。这可以是替代的,它会比遍历所有 DOM 然后应用 CSS 属性更好。
标签: javascript jquery