javascript - 标识符“i”已被声明为问题
问题描述
我尝试为显示内容做一个手风琴,我在 mi js 代码上遇到了这个问题,我确信这是一个很容易解决的问题,但我现在看不到它,我需要帮助才能看到它。
JS代码:
var acc = document.getElementsByClassName("servicon-button");
var i;
for (i = 0; i < acc.length; i++) {
acc[i].addEventListener("click", function() {
this.classList.toggle("active");
var panel = this.nextElementSibling;
if (panel.style.maxHeight) {
panel.style.maxHeight = null;
} else {
panel.style.maxHeight = panel.scrollHeight + "px";
}
});
}
我的这个html:
<button class="servicon-button"> <img src="icons/computer.svg" alt=""> </button>
<div class="panel">
解决方案
尝试在i
内部声明变量for loop
,将变量放在 for 循环中确保变量仅在循环内部使用,这是一件好事,如果将其放在外部,它将与全局范围内的代码中的其他变量混合可能会导致重新分配或重新声明变量等问题
const acc = document.getElementsByClassName("servicon-button");
for (let i = 0; i < acc.length; i++) {
acc[i].addEventListener("click", function() {
this.classList.toggle("active");
const panel = this.nextElementSibling;
if (panel.style.maxHeight) {
panel.style.maxHeight = null;
} else {
panel.style.maxHeight = panel.scrollHeight + "px";
}
});
}
旁注:var
不是真的推荐,使用const
andlet
代替
推荐阅读
- spring-boot - 执行处理器“org.thymeleaf.spring5.processor.SpringInputGeneralFieldTagProcessor”时出错
- vue.js - fontawesome 5 在 vue js 应用程序中找不到一个或多个图标
- jquery - 应该支持所有视频格式的jQuery视频播放器
- javascript - 将 img 移动到断点上的不同引导 col
- excel - 当 Excel 关闭然后重新打开时,ActiveX 命令按钮停止工作
- java - 关于 double 和 bigdecimal 精度问题
- asp.net-core - 在 ASP.NET Core 2.2 中使用 Auth0 身份验证再次运行 Web api 集成测试
- python - 我想找到如何对范围内随机生成的数字使用 if 语句
- django - 在单个模板中编写 django 多个视图
- ios - 以编程方式将数据源分配给 UITableView 而不调用数据源方法