【发布时间】:2022-01-25 12:33:14
【问题描述】:
我需要按卡片实现过滤器。我已经实现了按每种颜色进行过滤,但是如何按多个参数进行过滤?我使用 switch case 来过滤对象
每个复选框项对应一个数字。第一个复选框显示所有卡片。随后的每一个对应于数字和颜色。需要帮助如何过滤掉几个参数。例如第二个(绿色)和第三个(橙色)
let checkboxesSelectchecked = document.querySelectorAll(
"input[type=checkbox][name=one]"
);
checkboxesSelectcheckedZones.forEach((item) => {
item.addEventListener("change", () => {
for (let i = 0; i < check.length; i++) {
let supp = check[i];
console.log(supp);
switch (supp) {
//all
case "one": {
colorgreen.forEach((i) => {
i.classList.remove("collapse");
});
collororange.forEach((i) => {
i.classList.remove("collapse");
});
colorgray.forEach((i) => {
i.classList.remove("collapse");
});
colorred.forEach((i) => {
i.classList.remove("collapse");
});
break;
}
//green
case "two": {
collororange.forEach((i) => {
i.classList.add("collapse");
});
colorgray.forEach((i) => {
i.classList.add("collapse");
});
colorred.forEach((i) => {
i.classList.add("collapse");
});
colorgreen.forEach((i) => {
i.classList.remove("collapse");
});
break;
}
//orange
case "three": {
colorgreen.forEach((i) => {
i.classList.add("collapse");
});
colorgray.forEach((i) => {
i.classList.add("collapse");
});
colorred.forEach((i) => {
i.classList.add("collapse");
});
collororange.forEach((i) => {
i.classList.remove("collapse");
});
break;
}
//red
case "four": {
colorgreen.forEach((i) => {
i.classList.add("collapse");
});
colorgray.forEach((i) => {
i.classList.add("collapse");
});
collororange.forEach((i) => {
i.classList.add("collapse");
});
colorred.forEach((i) => {
i.classList.remove("collapse");
});
break;
}
//gray
case "five": {
colorgray.forEach((i) => {
i.classList.remove("collapse");
});
colorgreen.forEach((i) => {
i.classList.add("collapse");
});
colorred.forEach((i) => {
i.classList.add("collapse");
});
collororange.forEach((i) => {
i.classList.add("collapse");
});
break;
}
default:
console.log("def");
}
}
}
【问题讨论】:
标签: javascript