0

私は2つの異なる検索入力に関連付けられた関数を持っています。私のforループでは、行をループし、どちらの検索入力が使用されたかに基づいて最初の列か3番目の列をフィルタリングします。ループ内に2つのif文があると思わない場合、どうすればこの問題をリファクタリングできますか?forループと複数のelse文のリファクタリング

// 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"; 
    }  
    } 
} 
+0

わかりやすくするために、スニペットまたはJSFiddleを提供してください。 –

答えて

1

あなたが表示プロパティを設定するために三元の文を使用することができます。

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

私は、関数の先頭にcolRule VARを宣言し、唯一の再宣言ではなく、ループでそれを割り当てますそれ。

+0

ありがとう、それはそれの世話をした! – MegsD

関連する問題