Javascript 使用for循环和多个if-else语句重构函数

Javascript 使用for循环和多个if-else语句重构函数,javascript,function,if-statement,event-handling,tablefilter,Javascript,Function,If Statement,Event Handling,Tablefilter,我有一个附加到两个不同搜索输入的函数。在for循环中,我循环遍历行,并根据使用的搜索输入筛选第一列或第三列。循环中有两个if语句感觉不对劲,我如何重构它 // attach keyup event listener to input document.getElementById("search-rule").addEventListener("keyup", searchVehicle); document.getElementById("search-region").addEventLi

我有一个附加到两个不同搜索输入的函数。在for循环中,我循环遍历行,并根据使用的搜索输入筛选第一列或第三列。循环中有两个if语句感觉不对劲,我如何重构它

// attach keyup event listener to input
document.getElementById("search-rule").addEventListener("keyup", searchVehicle);
 document.getElementById("search-region").addEventListener("keyup", searchVehicle);

var ruleEl = document.getElementById("search-rule");

function searchVehicle(event) {
    // convert input to uppercase
    var filter = event.target.value.toUpperCase();
    // select rows in tbody
    var rows = document.querySelector("#myTable tbody").rows;
    // loop through the rows 
  // if the input searches by rule, search the first column
  // else search the 3rd column (region)
    // if in input show the row, if not in input, hide row
    for (var i = 0; i < rows.length; i++) {
    if (event.target === ruleEl) {
        var colRule = rows[i].cells[0].textContent.toUpperCase();
    } else {
      var colRule = rows[i].cells[2].textContent.toUpperCase();
    }
    if (colRule.indexOf(filter) > -1) {
      rows[i].style.display = "";
    } else {
      rows[i].style.display = "none";
    }      
  }
}
//将keyup事件侦听器附加到输入
document.getElementById(“搜索规则”)。addEventListener(“键控”,searchVehicle);
文档.getElementById(“搜索区域”).addEventListener(“键控”,searchVehicle);
var ruleEl=document.getElementById(“搜索规则”);
功能搜索车辆(事件){
//将输入转换为大写
var filter=event.target.value.toUpperCase();
//选择正文中的行
var rows=document.querySelector(“#myTable tbody”).rows;
//环行
//如果输入按规则搜索,则搜索第一列
//否则搜索第三列(区域)
//如果在输入中显示行,如果不在输入中,则隐藏行
对于(变量i=0;i-1){
行[i].style.display=“”;
}否则{
行[i].style.display=“无”;
}      
}
}

您可以使用三元语句设置显示属性:

rows[i].style.display = (colRule.indexOf(filter) > -1) ? "" : "none";

我还想在函数顶部声明
colRule
var,并且只在循环中分配它,而不是重新声明它。

为了清晰起见,请提供一个工作片段或JSFIDLE。谢谢,已经解决了!