javascript - 标识符 'i'已被声明问题

标签 javascript html

我尝试做一个 Accordion 来显示内容,我在 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">

最佳答案

尝试在for循环内声明i变量,将变量放入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,而是使用 constlet

关于javascript - 标识符 'i'已被声明问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67251351/

相关文章:

javascript - 数据未绑定(bind)到 angular4 typescript 中的数组?

javascript - jquery - 查找表中的元素并根据结果更改其他元素

javascript - 如何以 Angular 检查离线和在线

javascript - CouchDB - 映射函数中的变量

javascript - 代码不适用于使用 SEWP 的 SP 在线站点页面

css - 我无法在主要区域设置 padding-right

html - 标题背景不显示的问题

css - 在所有设备上输入文本宽度不是 100% 响应

javascript - 如何让子菜单以小窗口显示?

html+css,在没有表格的ul旁边放一个按钮