如果其他内容在不应该执行时执行,则中的所有内容



我有以下if-else语句:

let userIconText = document.getElementsByClassName("iconText");
let userIconDiv = document.getElementById("userIcons");
let rCorners2 = document.getElementById("rcorners2");
let homeContainerDiv = document.getElementById("homePanel");
let icons = document.querySelectorAll('#userIcons li');
document.getElementById("menuFilter").onclick = function(){
for (let i = 0; i < userIconText.length; i++) {
for (let j = 0; j < icons.length; j++) {
if (userIconText[i].style.display !== 'block') {
userIconText[i].style.display = "block";
console.log("1");
userIconDiv.setAttribute("style","width:10vw");
icons[i].setAttribute("style","margin:75px 20px 0 10px");
console.log("2");
homeContainerDiv.setAttribute("style","width:85vw; transform: translateX(5%);");
rCorners2.setAttribute("style","width: 53vw; left: 295px");
console.log("3");
} else {
userIconText[i].style.display = "none";
console.log("4");
userIconDiv.setAttribute("style","width:5vw");
homeContainerDiv.setAttribute("style","width:90vw");
console.log("5");
icons[i].removeAttribute("style", "margin");
rCorners2.removeAttribute("style", "width");
console.log("6");
}
}
}
}

现在这是有效的,但现在由于某种原因,该语句中的所有内容都在执行,因此,当我点击";菜单过滤器"我查看了控制台日志,它显示了从1到6的数字。我只是不明白为什么现在会发生这种事,它昨天起了作用,现在我遇到了这个问题。所以当我第一次点击";菜单过滤器"它应该只是执行其他操作之前的所有内容,然后当我再次单击它时,它应该是执行其他操作之后的所有内容。任何关于如何分类的建议都将非常感谢

if else在两个for循环中。

在不同的重复中,它可能会触发不同的if分支。

这是我可以根据你发布的代码来判断的。

解决了问题,感谢您的帮助。对于userIconText,有7个元素,由于正在进行的更改,图标中有8个元素,因此,它似乎运行了比应该运行的更多的重复,这导致它也在其他条件之后运行部件。

所以我所做的是在第二个for循环中添加以下内容:

for (let j = 0; j < icons.length; j++) {
if(icons[j].classList.contains("hidden-search")) {
continue;
}

相关内容

最新更新