【发布时间】:2018-01-18 16:29:08
【问题描述】:
我需要通过复选框进行过滤,这将在一个类别中指定两个或多个选项。我的过滤器在每个类别中过滤一个选项。
function change() {
let results = Array.from(document.querySelectorAll('.result > div'));
// Hide all results
results.forEach(function(result) {
result.style.display = 'none';
});
// Filter results to only those that meet ALL requirements:
Array.from(document.querySelectorAll('.filter input[rel]:checked'), function(input) {
const attrib = input.getAttribute('rel');
results = results.filter(function(result) {
return result.classList.contains(attrib);
});
});
// Show those filtered results:
results.forEach(function(result) {
result.style.display = 'block';
});
}
change();
<div class="filter">
<h1>Select models</h1>
<div class="checkbox">
<label><input type="checkbox" rel="apple" onchange="change()"/>Apple</label>
</div>
<div class="checkbox">
<label><input type="checkbox" rel="samsung" onchange="change()"/>Samsung</label>
</div>
<div class="checkbox">
<label><input type="checkbox" rel="xiaomi" onchange="change()"/>Xiaomi</label>
</div>
<h1>Select processors</h1>
<div class="checkbox">
<label><input type="checkbox" rel="a9" onchange="change()"/>A9</label>
</div>
<div class="checkbox">
<label><input type="checkbox" rel="a8" onchange="change()"/>A8</label>
</div>
<div class="checkbox">
<label><input type="checkbox" rel="snapdragon" onchange="change()"/>Snapdragon</label>
</div>
<div class="checkbox">
<label><input type="checkbox" rel="exynos" onchange="change()"/>Exynos</label>
</div>
</div>
<div class="result">
<div class="apple a9">
<h1>iPhone 7</h1>
</div>
<div class="apple a8">
<h1>iPhone 6</h1>
</div>
<div class="samsung exynos">
<h1>Samsung s7</h1>
</div>
<div class="xiaomi snapdragon">
<h1>Xiaomi Redmi note 4x</h1>
</div>
</div>
所以结果我不能同时选择苹果和三星。我只能在每组中选择一个选项。它就像一个单选按钮。但我需要带有多个选项的复选框
【问题讨论】:
-
您想组合这些过滤器(例如:apple AND snapdragon)还是将它们相乘? (例如:苹果或金鱼草)
-
@zeropublix 我需要有机会在每个组中选择更多选项。例如,如果我选择三星和苹果,结果是什么都没有显示,但需要同时显示苹果和三星。我能解释一下我的问题吗?
-
@Mr.Chingis 如果你选择苹果三星和金鱼草怎么办??结果应该是全部 4 部手机还是没有(因为三星和苹果没有金鱼草)?
-
@sanatsathyan 无。因为选择的产品没有金鱼草处理器。如果我选择苹果三星小米和金鱼草,结果应该只有一部手机小米。因为在选择的手机中,至少有一部手机有金鱼草,所以结果应该是小米
-
@Mr.Chingis 是否有任何答案解决了您的问题?然后将它们标记为请或在我们努力为您提供帮助时表示感谢。
标签: javascript html checkbox