我在for循环中有一个相当简单的for循环,但是我无法使其按预期工作。 所示代码应该是过滤器。 eTags为我提供了要过滤的p元素。 我有几个按钮/过滤词,如果单击它们,“激活”会得到那些。 现在在第二个if条件中,我看p元素是否包含“筛选器按钮”的textContent。 它适用于一个过滤器,但如果激活> 2,则无效。 在第二次for循环迭代中,它隐藏了在第一次迭代中可见的一个元素。 我知道我很蠢,但是任何帮助将不胜感激!
let eTags = document.querySelectorAll(".placeDescription33");
let activated = document.getElementsByClassName('activexyz');
for (let n = 0; n < eTags.length; n++) {
let vater2 = eTags[n].parentNode;
let grossvater2 = vater2.parentNode;
if (activated.length === 0) {
eTags[n].style.visibility = "visible";
grossvater2.style.display = "inline"
}
for (let i = 0; i < activated.length; i++) {
let textCont = activated[i].textContent.trim();
if (eTags[n].textContent.contains(textCont)) {
eTags[n].style.visibility = "visible";
grossvater2.style.display = "inline"
} else if (!(eTags[n].textContent.contains(textCont))) {
eTags[n].style.visibility = 'hidden';
grossvater2.style.display = 'none';
}
}
}
答案 0 :(得分:1)
问题出在您的第二个循环中,您正在激活正确的对象,而停用错误的对象。因此,如果您在另一个迭代中打开一个,它将被关闭...我只是在手之前将所有功能都关闭了。
for (let n = 0; n < eTags.length; n++) {
let vater2 = eTags[n].parentNode;
let grossvater2 = vater2.parentNode;
if (activated.length === 0) {
eTags[n].style.visibility = "visible";
grossvater2.style.display = "inline"
}else{
eTags[n].style.visibility = 'hidden';
grossvater2.style.display = 'none';
for (let i = 0; i < activated.length; i++) {
let textCont = activated[i].textContent.trim();
if (eTags[n].textContent.contains(textCont)) {
eTags[n].style.visibility = "visible";
grossvater2.style.display = "inline"
}
}
}
}