【发布时间】:2018-02-28 11:16:01
【问题描述】:
我有一段代码用于根据给定的数组隐藏表格元素。我正在运行循环来比较其中一个单元格的 innerText 和给定数组。
但是,我的 if 语句是语句的行为很奇怪,一旦我将运算符设置为 === 操作成功并且与数组匹配的表行被隐藏。但是我需要我的 if 来隐藏不属于数组的元素,所以我很自然地将我的运算符设置为 !== 但是一旦我这样做了,它就会无论如何都会执行,当然会隐藏表中的所有元素。
任何想法为什么会发生在这里是代码:
var td1 = document.querySelectorAll("#course");
var rowss = document.querySelectorAll("#rows");
var courseNames1 = [td1.innerText];
var diff = _.difference(soretedArray, courseNames1)
console.log(diff);
for (var i = 0; i < rowss.length; i++) {
for (var j = 0; j < diff.length; j++) {
if (td1[i].innerText === diff[j]) { // if i set the logic operator to !== it hides all of the elements rather the ones that don't match
console.log(rowss[i]);
rowss[i].style.display = "none";
break;
}
}
}
【问题讨论】:
-
听起来你想在 all 匹配该谓词时隐藏它,而不仅仅是第一个。
-
var courseNames1 =[];后跟courseNames1 = td1.innerText没有任何意义。你想让courseNames1成为一个数组吗? (赋值用字符串替换数组。) -
为什么 "document.querySelectorAll("#course")" 其中 ID 应该是唯一的?
-
这是选择表格的所有单元格
-
您的代码中仍有
courseNames1。我认为你不应该删除它的代码。
标签: javascript arrays loops if-statement dom