javascript - 使用 javascript 在菜单中突出显示当前页面
问题描述
以下代码运行良好。但是老师让我解释“if(menu!==null)”,我解释不了。他说这是强制性的,但我删除了它,它仍然有效。这是主页的示例。
function setBold() {
var menu = document.getElementById('page').getAttribute("data-page");
if (menu !== null) {
document.getElementById(menu).className = "active";
}
}
.active {
font-weight: bold;
font-size: 18px;
}
<body onload="setBold()" id="page" data-page="Home">
<div class="menu">
<a id="Home" href="">Home</a>
<a id="About" href="">About My Cakes</a>
<a id="Find" href="">Find Maria's Coffe</a>
</div>
<body>
解决方案
添加此if(menu!==null)
条件的原因如下:
- 可能会出现没有
data-page
in的情况body
。 - 脚本可能会在渲染主体之前运行,如果我们不在标签中使用
defer
属性,就会发生这种情况。<script>
推荐阅读
- angular - 从容器外部访问 dockerized 节点应用程序时出现问题
- python - Windows 10 中的 Python secrets.SystemRandom 有多好?
- python - 将所有控制台文本复制到剪贴板
- botframework - 如何在没有 TeamsActivityHandler 的情况下使用 Node JS 响应 Bot 框架 v4 中的任务模块或任务/获取?
- amazon-web-services - CloudFormation 嵌套堆栈输出限制
- php - 如何使用 Composer 在 openclient 3 项目中安装“google/apiclient”包?
- python - 错误“TypeError:FirstForm() 缺少 1 个必需的位置参数:'request'”
- javascript - 如何正确地将异步应用到此函数,以便在显示返回数据的页面呈现之前调用它?
- c++ - Langford 序列 - 利用对称性/消除对称性
- react-native - 如何修复:TypeError:超级表达式必须为空或函数