if语句中的奇怪行为

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了if语句中的奇怪行为相关的知识,希望对你有一定的参考价值。

我有一段代码,用于根据给定的数组隐藏表元素。我正在运行循环来比较其中一个单元格和给定数组的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;
    }
  }
}
答案

我添加了代码,因为我理解了你的请求:你想要否定“包含”来隐藏元素。根据您提供的信息,这是尽可能完整的。

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";
  }
}

以上是关于if语句中的奇怪行为的主要内容,如果未能解决你的问题,请参考以下文章

具有零值双精度的奇怪 if 语句行为

cfscript中IF块内的coldfusion continue关键字/奇怪的行为

switch 语句中的奇怪行为

使用制服时 Xamarin OpenGL 片段着色器的奇怪行为

函数奇怪行为中的JQuery变量

Laravel 4:刀片布局中的 if 语句很奇怪