You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript实现复选框分类筛选商品卡片功能

分类复选框筛选功能实现

你现有代码的核心问题是,遍历卡片时只做了内容匹配判断,没有实际操作元素的显隐属性,且取消选中时没有恢复卡片的显示状态。

可直接运行的修正代码

我把事件从click换成了更适配表单控件的change,同时提前缓存卡片DOM减少重复查询:

const procesadores = document.querySelector(".procesador");
// 页面加载完成后提前获取所有商品卡片,避免每次点击都遍历DOM
const productCards = document.querySelectorAll(".card");

procesadores.addEventListener("change", () => {
  const targetValue = procesadores.value.trim();
  productCards.forEach(card => {
    if (procesadores.checked) {
      // 匹配复选框对应分类的卡片显示,其余隐藏
      const matchCategory = card.textContent.includes(targetValue);
      card.style.display = matchCategory ? "block" : "none";
    } else {
      // 取消选中时所有卡片恢复默认显示
      card.style.display = "block";
    }
  })
})

优化提示

不推荐直接用textContent做匹配依据:如果卡片内其他无关文本刚好和复选框value重名,会出现筛选误判。更稳妥的做法是给每个卡片加自定义分类属性,比如:

<div class="card" data-category="procesador">某款处理器商品</div>
<div class="card" data-category="graphic-card">某款显卡商品</div>

对应把判断逻辑替换成属性判断即可,筛选准确率会高很多:

const matchCategory = card.dataset.category === targetValue;

如果后续要加多个分类的复选框,只要把逻辑改成每次点击时收集所有已选中的复选框value,再判断卡片分类是否在选中集合里就行,没有选中任何筛选项时默认展示全部卡片。

内容的提问来源于stack exchange,提问作者Lucas Cabral

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 01:01:14