我有一段代码,用于根据给定的数组隐藏表格元素。我正在运行循环来比较其中一个单元格和给定数组的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;
}
}
}
答案 0 :(得分:1)
我添加了代码,因为我理解了您的请求:您希望否定“contains”来隐藏元素。根据您提供的信息,这是尽可能完整的。
var soretedArray = [];//initialized elsewhere
var td1 = document.querySelectorAll("#course");
var rowss = document.querySelectorAll("#rows");
function tdContains(td) {
for(var j= 0 ; j< soretedArray.length; j++){
if(td.innerText === soretedArray[j]){
return true;
}
}
return false;
}
for(var i = 0 ; i < rowss.length; i++){
if(!tdContains(td1[i])) {
console.log(rowss[i]);
rowss[i].style.display= "none";
}
}