[英]Identifier already declared - Identifier 'userScore' has already been declared
[英]Identifier 'i' has already been declared problem
我尝试为显示内容做一个手风琴,我在 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 loop
内声明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
不是真的推荐,使用const
和let
代替
不要在循环之前声明var i
,而是在for
循环中声明它,如下所示: for (let i = 0; i < acc.length; i++) {...
这就是错误的来源。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.