
本文旨在解决当页面上存在多个具有相同类名的元素,并且需要通过点击事件分别控制它们的显示与隐藏时,如何使用原生 J*aScript 实现正确的功能。重点在于如何避免所有操作都只影响到第一个元素的问题,通过索引的方式,确保每个元素都能独立响应点击事件。
当处理多个具有相同类名的元素,并希望通过 J*aScript 为每个元素添加独立的行为时,直接使用 document.querySelector 可能会导致问题。querySelector 只会返回匹配选择器的第一个元素,因此后续的操作都会集中在该元素上,而忽略了其他具有相同类名的元素。解决此问题的关键在于使用 document.querySelectorAll 获取所有匹配的元素,并利用索引来区分和操作它们。
问题分析
假设我们有一组卡片,每个卡片都有一个“选项”按钮和一个下拉菜单。点击任何一个“选项”按钮,都应该只显示或隐藏对应卡片的下拉菜单。如果使用 querySelector 来选择下拉菜单元素,那么无论点击哪个“选项”按钮,都只会影响到第一个下拉菜单。
解决方案
使用 querySelectorAll 获取所有元素: 将 document.querySelector(".dropdown-content") 替换为 document.querySelectorAll(".dropdown-content")。这将返回一个包含所有下拉菜单元素的 NodeList。
在 forEach 循环中使用索引: 在遍历按钮的 forEach 循环中,添加索引参数。这个索引将对应于按钮在 optionsButton 数组中的位置,也对应于其关联的下拉菜单在 dropdownContent NodeList 中的位置。
使用索引访问对应的元素: 在事件监听器中,使用索引来访问 dropdownContent NodeList 中对应的下拉菜单元素,并切换其 show-dropdown 类。
代码示例
YouMind
AI内容创作和信息整理平台
207
查看详情
const optionsButton = Array.from(document.querySelectorAll(".dropdown-toggle"));
const dropdownContent = document.querySelectorAll(".dropdown-content");
optionsButton.forEach((button, index) => {
button.addEventListener("click", () => {
dropdownContent[index].classList.toggle("show-dropdown");
});
});HTML 结构示例
<ul>
<li>
<h1>Title</h1>
<p>blah blah blah</p>
<button class="dropdown-toggle">Options</button>
<div class="dropdown-content">
<a href="#">Edit</a>
<a href="#">Delete</a>
</div>
</li>
<li>
<h1>Title</h1>
<p>blah blah blah</p>
<button class="dropdown-toggle">Options</button>
<div class="dropdown-content">
<a href="#">Edit</a>
<a href="#">Delete</a>
</div>
</li>
<li>
<h1>Title</h1>
<p>blah blah blah</p>
<button class="dropdown-toggle">Options</button>
<div class="dropdown-content">
<a href="#">Edit</a>
<a href="#">Delete</a>
</div>
</li>
</ul>CSS 样式示例
ul {
display: flex;
list-style: none;
}
li {
margin: 0 2em;
}
.dropdown-content {
display: none;
flex-direction: column;
}
.show-dropdown {
display: flex;
}
.dropdown-content a {
padding: 10px 0;
}注意事项
总结
通过使用 querySelectorAll 获取所有元素,并在 forEach 循环中使用索引,可以有效地为多个具有相同类名的元素添加独立的交互行为。这种方法避免了只影响第一个元素的问题,确保每个元素都能正确响应用户的操作。这种模式在构建动态网页和用户界面时非常有用,能够提升用户体验。
以上就是使用 J*aScript 动态切换具有相同类名的多个元素的显示状态的详细内容,更多请关注其它相关文章!
# 应于
# 北京seo排名咋做
# 兰州榆中企业网站建设
# seo优化包含哪些内容
# 线上网站推广方案怎么写
# 软文推广营销是怎么做的
# 湖北seo推广作用
# 武汉优化网站排行榜
# 亿玫网络seo优化
# 短视频变现营销推广策略
# 网站关键词优化办法
# 并在
# 遍历
# 都有
# css
# 选择器
# 影响到
# 只会
# 都能
# 第一个
# 多个
# 点击事件
# ssl
# node
# html
# java
# javascript
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
批改网网页版登录 批改网电脑版学生登录入口
抖音如何解除|直播|权限绑定_抖音关闭并解绑|直播|功能的方法
谷歌邮箱怎么换绑定邮箱Gmail安全备份邮箱修改方法
J*a中逻辑运算符如何使用_逻辑与或非的基础用法讲解
Sublime怎么自动添加CSS前缀_Sublime安装Autoprefixer插件
人教版电子教材在线获取指南
search中maxlength属性用法解析
圆通快递官网入口查询单号 手机版官方查询入口
126邮箱网页在线登录2025_126邮箱网页版入口官方地址
铁拳8在线玩 铁拳8在线秒玩入口
AO3中文版手机快速通道_AO3最新稳定链接更新
Lar*el如何创建自定义的辅助函数(Helpers)_Lar*el全局函数定义与加载方法
告别阻塞等待:如何使用GuzzlePromises优雅处理PHP异步操作,提升应用响应速度
顺丰快递怎么查物流_顺丰快递物流信息实时查询操作指南
Selenium自动化:利用键盘模拟解决复杂日期输入框输入问题
CSS动画如何实现图标旋转并放大_transform rotate scale @keyframes实现
CSS过渡如何实现按钮悬停效果_transition属性控制背景颜色变化
J*aScript二进制处理_ArrayBuffer与Blob
优化CSS动画与J*aScript定时器协同:构建稳定Toast提示
sublime如何配置PHP开发环境_在sublime中运行与调试PHP代码
外媒评《燕云十六声》DIY载具新玩法:很像《塞尔达传说王国之泪》!
谷歌学术论文搜索引擎 谷歌学术官网入口论坛永久链接
SQLAlchemy 2.0 与 Pydantic 模型类型安全集成指南
包子漫画官网链接官方地址 包子漫画在线观看官网首页入口
《异星探险家》古怪的物品作用介绍
使用Google服务账号实现Google Drive API无缝集成与文件访问
Lar*el Dusk 测试中管理浏览器权限:以剪贴板访问为例
《海贝音乐》均衡器设置方法
b站怎么设置动态仅粉丝可见_b站动态粉丝可见设置方法
mysql触发器如何编写_mysql触发器编写规范与代码示例讲解
J*aScript类型数组_TypedArray使用
苹果自助维修计划支持哪些设备机型
J*aScript与HTML元素交互:图片点击事件与链接处理教程
win11如何诊断DirectX问题 Win11运行dxdiag工具排查显卡故障【排错】
获取WooCommerce产品在后台编辑页面的分类ID
百度网盘网页入口链接分享 百度网盘官网入口网页登录
Python中深度嵌套字典与列表的数据提取与条件过滤指南
PPT页面尺寸怎么修改 PPT自定义幻灯片大小与方向设置【教程】
广州地铁app准妈咪徽章领取方法
智学网成绩单查询系统网_智学网学生平台登录
Keras中Convolution2D层及其核心辅助层详解
yy漫画官方网站登录入口_yy漫画在线阅读页面地址
批改网官网首页登录 批改网学生用户登录入口
漫蛙manwa2网页版书签同步链接_漫蛙manwa多设备登录入口
Final Cut Pro视频加EQ教程
《领英》查看屏蔽名单方法
Chart.js 教程:自定义插件实现图表与图例间距调整
windows10怎么关闭自动安装应用_windows10禁止推广应用下载
WooCommerce购物车:强制显示所有交叉销售商品教程
Python项目中的条件导入:解决跨模块依赖问题
2025-10-01
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。