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

为什么事件处理程序仅能切换首个元素的类名,其余元素无响应?

问题根因

  • document.querySelector() 仅返回页面内第一个匹配指定选择器的DOM元素,你原有代码仅绑定了第一个.accordion-icon图标的点击事件,且仅能控制第一个.item容器的类名切换,其余元素未做绑定自然不会生效。

修复实现

1. 替换原有JS逻辑

选中所有图标逐个绑定事件,点击时定位当前触发事件对应的父容器再做类名切换:

// 选中所有accordion图标元素
const faqDropDowns = document.querySelectorAll(".accordion-icon");

faqDropDowns.forEach(icon => {
  icon.addEventListener("click", function() {
    // 查找当前点击图标所属的item父容器
    const currentFaqContainer = this.closest(".item");
    currentFaqContainer.classList.toggle("open");
  });
});

2. 补充必要CSS样式

你原有CSS缺少隐藏内容的默认样式和打开后的显示规则,同时原有svg样式存在语法疏漏,补充修正后如下:

.item { margin-bottom: 10px; }
p { margin: 0; }
/* 修正原有width属性缺冒号的问题 */
svg { width: 1em; height: 1em; margin: 10px; }
/* 新增内容显隐控制样式 */
.item .hidden-box {
  display: none;
}
.item.open .hidden-box {
  display: block;
}

内容的提问来源于stack exchange,提问作者Bradley Kittle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:24:04