编辑:问题在于,使用特定类调用所有div是在创建HTMLCollection,而不是数组。
我正在制作一个文本项目菜单,根据选择的项目在文档上显示文本。选择一个项目时将触发以下功能。理想情况下,它应该:
function togglePlaceholder(id){
let div = document.getElementById(id);
let otherDivs = document.getElementsByClassName('highlighted');
if($(div).hasClass('highlighted')){
hideNewCode();
} else {
div.classList.toggle('highlighted');
showNewCode(id);
}
for (let i = 0; i < otherDivs.length; i++) {
otherDivs[i].classList.toggle('highlighted');
}
}
但是,莫名其妙地发生的是,所选的非突出显示项进入else语句,切换为突出显示,显示信息,然后迅速与数组中的其他项切换为即使在未突出显示div时就已经调用了项目数组!调用otherDivs
的行如何仍能在六行之后运行?该数组应该已经声明并且可以使用了。它不应该还在寻找具有“突出显示”类的其他div。
如何绕过此错误?
解决方案:
let blueDivs = document.getElementsByClassName('blueSub');
let otherDivs = [];
for (let i = 0; i < blueDivs.length; i++){
otherDivs.push(blueDivs[i]);
}