【发布时间】:2021-10-30 01:02:43
【问题描述】:
带有复选框的表格过滤器值
我想匹配所有复选框条件。
问题:取消选中并再次选中时。它比较了最后一个值
示例:我取消选中机器人并重新选中 james 它不应该显示机器人
我需要什么#
function filter(event, filterCol) {
let element = event.target;
let condt1 = document.getElementsByClassName(filterCol);
var table = document.getElementById("listingTable");
for (let i = 0; i < condt1.length; i++) {
if (condt1[i].innerHTML.toLocaleUpperCase() == element.value.toLocaleUpperCase()) {
if (element.checked == true) {
condt1[i].parentElement.closest('tr').style = "display:table-row"
} else {
condt1[i].parentElement.closest('tr').style = "display:none"
}
}
}
}
document.querySelectorAll('.option1').forEach(input => input.addEventListener('input', ()=>filter(event,"check1")));
document.querySelectorAll('.option3').forEach(input => input.addEventListener('input', ()=>filter(event,"check3")));
<div id="input">
<label>Filter Name </label><br>
<label>Adison<input class="option1" type="checkbox" value="Adison" checked/></label>
<label>James<input class="option1" type="checkbox" value="James" checked/></label><br><br>
<label>Filter Race </label><br>
<label>human<input class="option3" type="checkbox" value="human" checked/></label>
<label>robot<input class="option3" type="checkbox" value="robot" checked/></label>
</div><br>
<table id="listingTable">
<tr>
<th>Name</th>
<th>Country</th>
<th>Race</th>
</tr>
<tr>
<td class="check1">Adison</td>
<td >Sweden</td>
<td class="check3">robot</td>
</tr>
<tr>
<td class="check1">Adison</td>
<td >UK</td>
<td class="check3">human</td>
</tr>
<tr>
<td class="check1">James</td>
<td >Sweden</td>
<td class="check3">human</td>
</tr>
<tr>
<td class="check1">James</td>
<td>Germany</td>
<td class="check3">robot</td>
</tr>
<tr>
<td class="check1">Adison</td>
<td>Italy</td>
<td class="check3">robot</td>
</tr>
</table>
或者我应该修改过滤器功能。任何人都可以建议我的代码吗?
谢谢。
【问题讨论】:
标签: javascript checkbox filter html-table