JavaScript DOM操作:点击关联元素获取目标文本内容的教程

javascript dom操作:点击关联元素获取目标文本内容的教程

本教程详细介绍了如何通过JavaScript处理用户点击事件,并结合DOM的 closest() 和 querySelector() 方法,从复杂的HTML结构中准确获取目标元素的文本内容。文章强调了使用 addEventListener() 进行事件绑定、避免重复ID以及高效DOM遍历的最佳实践,帮助开发者在动态交互场景下精确操作DOM。

在Web开发中,我们经常需要实现这样的交互:用户点击页面上的某个元素(如一个图标或按钮),然后程序需要根据这个点击事件,获取或操作页面中与被点击元素相关联的另一个元素的文本或属性。例如,在一个列表项中,点击一个“编辑”图标,然后获取该列表项中某个标题的文本内容。本教程将指导您如何利用JavaScript和DOM API,以一种健壮且高效的方式实现这一常见需求。

场景分析与需求定义

假设我们有一个展示服务项的页面,每个服务项都包含一个可点击的编辑图标和一个标题链接。我们的目标是:当用户点击某个服务项的编辑图标时,能够准确地获取该服务项内部标题链接(标签)的文本内容,并可进一步将其用于其他操作,例如填充到一个输入框中。

原始的HTML结构可能如下所示,其中包含了一些需要注意的细节:

立即学习“Java免费学习笔记(深入)”;

Hello

在处理此类需求时,有几个关键的最佳实践和注意事项:

id 属性的唯一性: HTML规范规定,id 属性在整个文档中必须是唯一的。如果上述服务项结构会在页面中重复出现(例如在一个列表中),那么像 update_pen, swiper-slide-one, text_area_box 这样的 id 属性就不应该被重复使用。在这种情况下,我们应该使用类(class)来标识这些元素。事件绑定方式: onclick 属性直接嵌入HTML是一种较旧的事件绑定方式,不推荐在现代JavaScript开发中使用。它难以维护,且在复杂场景下功能受限。推荐使用 addEventListener() 方法进行事件绑定,它提供了更灵活的事件管理能力,并能更好地分离HTML结构与JavaScript行为。DOM遍历效率: 对于复杂或嵌套的DOM结构,直接使用 parentNode、nextSibling、firstChild 等属性进行链式遍历可能会变得冗长且易出错。更推荐使用 closest() 和 querySelector() 等方法,它们提供了更强大和简洁的DOM遍历能力。

优化HTML结构

为了遵循最佳实践并更好地支持多实例场景,我们首先对HTML结构进行优化。我们将移除重复的 id 属性,并为可点击的图标添加一个通用的类名 button,以便于JavaScript选择和事件绑定。

点击编辑

Hello

点击编辑

Goodbye

现在,我们有了多个独立的 .swiper-slide 元素,每个元素内部都包含一个 .button 元素和一个 链接,以及一个 input 字段。

JavaScript实现:事件监听与高效DOM遍历

我们将使用 document.querySelectorAll() 选中所有目标按钮,并通过 forEach 循环为每个按钮绑定点击事件。在事件处理函数中,我们将利用 Event.target、Element.closest() 和 Element.querySelector() 来实现精准的DOM遍历和文本获取。

选中所有按钮并绑定事件:使用 document.querySelectorAll(‘i.button’) 来获取页面上所有带有 button 类的 元素。然后,通过 forEach 循环为每个找到的元素添加一个 click 事件监听器。

利用 Event.target 获取点击源:在事件监听器内部,事件对象 e 的 e.target 属性将指向实际被点击的 元素。

向上遍历DOM树:Element.closest()从 e.target 开始,我们需要找到其最近的共同祖先元素,该祖先元素能够唯一标识一个完整的服务项。在本例中,这个祖先元素是带有 swiper-slide 类的

。closest(‘.swiper-slide’) 方法能够高效地完成这一任务,它会从当前元素开始,向上查找(包括自身)第一个匹配指定CSS选择器的祖先元素。

向下遍历DOM树:Element.querySelector()一旦我们通过 closest() 找到了代表整个服务项的父容器(例如 parentSlide),我们就可以在其内部使用 querySelector(‘a’) 来查找目标 元素。querySelector() 会在该父容器的子孙元素中搜索第一个匹配选择器的元素,确保我们获取的是当前服务项的标题链接。

获取文本内容:Node.textContent获取到目标 元素后,使用其 textContent 属性即可获取其包含的纯文本内容,不包括任何HTML标签。

(可选)将文本赋值给输入框:同样地,在 parentSlide 内部使用 querySelector(‘input’) 可以找到对应的输入框,然后将获取到的文本赋值给它的 value 属性。

下面是完整的JavaScript代码实现:

// 1. 选中所有带有 'button' 类的图标元素document.querySelectorAll('i.button').forEach(el => {  // 2. 为每个图标元素添加点击事件监听器  el.addEventListener('click', e => {    // 3. 从被点击的元素 (e.target) 开始,向上查找最近的 '.swiper-slide' 祖先元素    // 这确保了我们操作的是与被点击按钮相关联的那个服务项容器    const parentSlide = e.target.closest('.swiper-slide');    // 4. 在找到的 '.swiper-slide' 容器内部,使用 querySelector() 查找 'a' 元素    // 这确保了我们获取的是当前服务项的标题链接    const anchorElement = parentSlide.querySelector('a');    // 5. 获取 'a' 元素的文本内容    const text = anchorElement.textContent;    console.log("成功获取到的标题文本内容:", text); // 打印到控制台    // 6. (可选)将获取到的文本赋值给同服务项中的输入框    const inputElement = parentSlide.querySelector('input');    if (inputElement) { // 检查输入框是否存在      inputElement.value = text;      console.log("文本已成功赋值给输入框:", inputElement.value);    }  });});

关键概念与最佳实践总结

Event.target: 在任何事件处理函数中,e.target 属性始终指向实际触发事件的那个DOM元素,即使事件是通过事件冒泡到达监听器的。Element.closest(selector): 这是一个非常强大的DOM遍历方法。它从当前元素开始,沿着DOM树向上(包括当前元素自身)查找,直到找到第一个与指定CSS选择器匹配的祖先元素。如果找不到,则返回 null。它极大地简化了查找共同父级或特定祖先元素的操作,比手动链式调用 parentNode 更简洁、更健壮。Element.querySelector(selector): 与 document.querySelector() 类似,但它在指定元素的子孙元素中查找第一个匹配CSS选择器的元素。这限制了搜索范围,提高了效率和准确性,尤其是在处理重复组件时。Node.textContent: 用于获取元素及其所有子孙节点的纯文本内容。与 innerHTML 不同,它不会返回HTML标签,只返回可见文本。事件监听器 addEventListener(): 这是现代JavaScript中推荐的事件绑定方式。它允许为同一个元素绑定多个相同类型的事件处理器,且能更好地管理事件的生命周期。避免重复 id: 再次强调,id 属性在HTML文档中必须是唯一的。对于可重复的组件或元素集合,应优先使用类(class)进行标识和选择。事件委托(Event Delegation): 对于页面上大量动态添加或重复出现的元素,如果它们共享一个共同的祖先元素,可以考虑在祖先元素上绑定一个事件监听器,然后通过检查 e.target 来判断是哪个子元素触发了事件。这种技术可以减少内存占用,提高性能。本教程的示例中,为每个按钮单独绑定监听器是可行的,但当按钮数量非常庞大时,事件委托会是更好的选择。

总结

本教程详细阐述了如何通过结合 addEventListener() 进行事件监听,并利用 closest() 和 querySelector() 这两个高效的DOM遍历方法,在复杂的HTML结构中精准定位并获取目标元素的文本内容。掌握这些现代JavaScript和DOM操作技巧,将使您能够编写出更加灵活、高效、易于维护且符合最佳实践的Web交互代码,从而更好地响应用户行为并动态管理网页内容。

以上就是JavaScript DOM操作:点击关联元素获取目标文本内容的教程的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1603096.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Flex布局中防止文本换行并实现同排元素自适应布局
上一篇 2025年12月23日 16:55:10
构建响应式搜索栏:使用Flexbox与媒体查询优化移动体验
下一篇 2025年12月23日 16:55:22

相关推荐

  • 抖音电商在哪里设置受限地区?抖音电商商家版

    随着抖音电商的迅速发展,越来越多的商家和内容创作者加入其中,拓展自己的销售渠道。但你是否知道?在抖音电商中,商家是可以自主设置商品销售的受限地区的!通过这一功能,能够有效管理发货范围、规避区域政策风险,并提升运营效率。那么,抖音电商的受限地区究竟在哪里设置?接下来,就为你全面解析操作流程和相关要点。…

    2026年8月27日
    000
  • Win10 强势反弹:霸占七成 Windows 市场份额

    statcounter 的统计数据显示,windows 11 的市场占有率正在逐步下降,到了今年4月份,其份额已经跌破了26%。与此同时,windows 10 显示出回升迹象,增加了0.96个百分点,达到了70.03%,这也是自2023年9月以来首次重返70%以上。不少用户表示,他们更倾向于选择 w…

    2026年8月27日
    000
  • qq浏览器怎么批量删除重复的收藏夹_QQ浏览器重复收藏夹批量清理技巧

    首先使用QQ浏览器内置整理功能可快速批量删除重复书签,进入收藏夹后点击整理选项,系统自动扫描并允许勾选删除重复项;若重复较多,建议导出收藏夹为HTML文件,通过电脑端Excel或文本工具提取网址并删除重复内容,再重新导入;还可借助第三方书签管理工具如Raindrop.io导入数据,利用其智能识别功能…

    2026年8月27日
    100
  • 协程调度(Scheduler)与上下文切换

    协程调度决定何时运行哪个协程,上下文切换则在调度过程中保存和恢复协程状态。1. 协程调度通过策略如优先级或轮转决定执行顺序,提高程序效率。2. 上下文切换通过关键字如yield或await实现,但频繁切换会增加性能开销。 协程调度与上下文切换是个既迷人又复杂的话题,让我们深入探讨一番。 在编程世界中…

    2026年8月27日
    000
  • 为什么Java线程池会导致CPU占用100%?如何排查和解决这个问题?

    Java 线程池导致CPU占用100%的原因及排查方法 近日,我们在线上服务中发现了一个容器的cpu使用率突然达到100%,为了保障系统的稳定性,我们首先将该容器下线,停止新的流量进入。然而,即使没有新的请求,容器中的java进程cpu使用率依然居高不下。随后,我们通过top命令检查各个线程的使用情…

    2026年8月27日
    000
  • 碰一碰秒传视频,还能语音三连!鸿蒙版哔哩哔哩太秀了!

    升级鸿蒙5后,我才发现鸿蒙版哔哩哔哩早已焕然一新!它早已不只是一个追番看视频的工具,更像是打通了手机“任督二脉”的全能型b站,那些藏在系统深处的黑科技,用一次就让人忍不住感叹:“这也太香了!” 动动嘴,三连轻松完成!彻底解放双手 想刷点有趣的视频放松一下?再也不用打开App、手动打字搜索了。只需唤醒…

    2026年8月27日
    100
  • HBase配置文件加载是否正确如何测试以解决Kerberos认证连接问题?

    HBase Kerberos认证连接问题及配置文件加载测试方法 在使用HBase时,通过Kerberos认证进行连接时,可能会遇到各种错误。这些错误通常与配置文件的加载和环境变量的设置有关。本文将详细介绍如何测试HBase配置文件是否被正确加载,以解决Kerberos认证连接的报错问题。 问题背景 …

    2026年8月27日
    000
  • 普罗宇宙机器人全球首发:重塑工业场景,定义工业级具身智能新标杆

    普罗宇宙机器人全球首发:重塑工业场景,定义工业级具身智能新标杆普罗宇宙机器人全球首发:重塑工业场景,定义工业级具身智能新标杆普罗宇宙机器人全球首发:重塑工业场景,定义工业级具身智能新标杆普罗宇宙机器人全球首发:重塑工业场景,定义工业级具身智能新标杆

    8月8日,普罗宇宙正式向全球发布面向工业场景的工业轮式人形机器人——普罗宇宙大白机器人。作为兼具柔性与精度的工业级具身智能机器人,大白的诞生不仅是普罗宇宙在机器人领域的突破性成果,更标志着工业自动化向“人机协同、柔性高效”迈进了关键一步,为全球智能制造产业注入全新活力。。 以“高精度、强适应性、工序…

    2026年8月27日 用户投稿
    100
  • 如何解决PHP异步操作中的效率瓶颈?GuzzlePromises与Composer助你构建高性能应用

    可以通过一下地址学习composer:学习地址 面对的困境:PHP异步操作的“痛点” 想象一下,你正在开发一个电商网站的商品详情页。为了展示完整的商品信息,你可能需要: 从商品服务获取基本信息。从库存服务获取实时库存量。从评论服务获取用户评价。从推荐服务获取相关商品列表。 如果这些请求都是顺序执行的…

    用户投稿 2026年8月27日
    000
  • 共铸高质量智赢高价值 |国家卫星气象中心风云三号数据中心样板点正式发布

    共铸高质量智赢高价值 |国家卫星气象中心风云三号数据中心样板点正式发布共铸高质量智赢高价值 |国家卫星气象中心风云三号数据中心样板点正式发布共铸高质量智赢高价值 |国家卫星气象中心风云三号数据中心样板点正式发布共铸高质量智赢高价值 |国家卫星气象中心风云三号数据中心样板点正式发布

    在大数据迅猛发展的今天,海量数据与各类应用正推动算力和人工智能成为驱动社会进步的“新质生产力”。作为政府与企业数字化转型的核心支撑,数据中心的建设愈发强调安全可靠、弹性敏捷以及绿色低碳,其战略地位前所未有。 2025年8月8日,国家卫星气象中心风云三号数据中心样板点在北京正式亮相。国家卫星气象中心(…

    2026年8月27日 用户投稿
    100
  • 智能写作检测怎么规避_GPTZero检测原理与应对策略

    要规避AI检测,需让文本呈现人类写作的多样性与不确定性。GPTZero等工具依赖分析文本的“困惑度”和“突发性”,AI因用词规整、句式单一、缺乏情感易被识别。人类写作则具备高低起伏的节奏、个性化表达和真实情感体验。为降低检测风险,应主动打破模式化表达:灵活变换句式长短,增加词汇丰富性,使用比喻、排比…

    2026年8月27日
    100
  • 告别空调噪音与闷热,TCL小蓝翼C7新风空调解决夏日清凉难题

    夏日酷暑,空调本该是带来清凉的得力助手,却常常因各种问题让人烦不胜烦。噪音扰人、空气浑浊、电费高昂……这些传统空调的通病,正在被一款全新升级的新风空调彻底改变——tcl小蓝翼c7新风空调,以智慧科技重新定义舒适生活。 传统空调三大难题:噪音、闷气、高耗电 每当夜晚来临,对声音敏感的人总会被空调持续的…

    2026年8月27日
    000
  • 轻松集成OpenTelemetry:告别繁琐配置,拥抱高效监控!

    在构建复杂的分布式系统时,监控和追踪变得至关重要。但是,手动配置和集成各种监控工具往往是一个令人头疼的过程。OpenTelemetry旨在通过提供一套标准化的API和SDK来简化这一过程。 open-telemetry/opentelemetry 这个 Composer 元包,可以帮助你快速上手 O…

    用户投稿 2026年8月27日
    000
  • 游戏服务器(Game Server)的后端架构

    游戏服务器的后端架构重要,因为它直接影响玩家的游戏体验。1) 高效的网络架构如使用tcp/ip和websocket处理客户端请求;2) 负载均衡通过nginx和haproxy分配流量;3) 数据同步使用分布式数据库如redis保证数据一致性;4) 安全性通过加密算法和验证机制防范攻击;5) 扩展性利…

    2026年8月27日
    000
  • 华为小艺AI竞赛Agent首战国际数学奥林匹克大赛(IMO)荣获佳绩!

    在2025年国际数学奥林匹克竞赛(imo)的特别邀请下,华为小艺ai竞赛agent首次登上这一全球最高水平的数学竞技舞台。经过为期三天的高强度比拼,该ai系统成功解出6道赛题中的5道,以总分34分的亮眼表现斩获银牌,仅以1分之差与金牌分数线(35分)擦肩而过。这一突破性成果,标志着华为在ai逻辑推理…

    2026年8月27日
    000
  • 带货新手快速入门 + AI 无人直播智能加持:轻松打造爆款直播间

    新手直播带货需先打好选品与定位基础,理解平台规则和“人货场”逻辑,再借助AI提升效率;AI可辅助内容生成、无人直播和短视频引流,但无法替代真人情感互动,应采用“人机协作”模式;通过OBS、TTS、虚拟数字人等工具实现AI直播,结合数据分析与用户思维持续优化,避免选品失误、内容单调、违规等问题,最终实…

    2026年8月27日
    000
  • 歌尔股份:已在汽车电子相关传感器、光学零组件等领域取得一定进展

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 歌尔股份在2024年度业绩说明会上对公司未来发展战略进行了阐述。公司表示对AI智能眼镜市场前景充满信心,并将持续加大在AI智能眼镜整机及精密零组件的设计研发和生产制造方面的投入。 目前,歌尔股份…

    2026年8月27日
    100
  • 华硕X870/X870E主板惊艳亮相《影之刃零》试玩会

    华硕X870/X870E主板惊艳亮相《影之刃零》试玩会华硕X870/X870E主板惊艳亮相《影之刃零》试玩会华硕X870/X870E主板惊艳亮相《影之刃零》试玩会华硕X870/X870E主板惊艳亮相《影之刃零》试玩会

    7月26日至27日,国产武侠风格动作游戏《影之刃零》在北京首钢园举办了首次大型线下试玩活动,吸引了数千名玩家齐聚一堂,共赴这场“江湖论剑”。作为知名电竞品牌,rog玩家国度不仅为现场提供了大量高性能硬件支持,更重磅展出了两款备受关注的x870/x870e主板——兼具萌趣与性能的华硕rog x870 …

    2026年8月27日 用户投稿
    100
  • Laravel API中的错误处理和返回格式规范

    在 laravel 中实现错误处理和规范 api 返回格式的步骤包括:1) 使用 laravel 内置的异常处理机制捕获和处理异常;2) 定义统一的返回格式结构,包含 success、data 和 message 字段;3) 在关键业务逻辑中使用 try-catch 块处理特定异常;4) 利用 ap…

    2026年8月27日
    000
  • 流光号虚拟主播直播带货指南(附详细教程+配套工具资源)

    流光号虚拟主播直播带货是一种高效且具未来感的数字营销新范式,其核心在于通过定制化虚拟形象、精细化内容脚本、技术融合与数据迭代,实现24小时不间断、品牌高度一致的低成本运营,解决真人主播成本高、状态波动、时间受限等痛点,借助新奇感吸引流量,并通过智能互动与情感化内容提升转化率,最终依托数据分析持续优化…

    2026年8月27日
    300

发表回复

登录后才能评论
关注微信