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

如何使用JS点击qualify按钮时获取对应电影名称(解决仅获首个节点问题)

解决方案

第一步:修复HTML的ID重复问题

HTML中ID必须唯一,重复的id="title"和id="cal-btn"会导致JS无法正确定位元素,先修改为class:

<div class="container-movies" id="container-movies">
    <div class="movie">
        <span class="text1 title">Transformers</span>
        <p class="text2">
            Lorem ipsum dolor sit amet consectetur adipisicing elit. Labore soluta ullam officiis tempore sapiente, nesciunt veniam. Vitae explicabo labore soluta quis, omnis vero nulla, dignissimos necessitatibus repellat perferendis quisquam laboriosam.
        </p>
        <span class="text2">gen</span>
        <div class="container-cal">
            <span class="cal">4</span>
            <button class="cal-btn">qualify</button>
        </div>
    </div>
    <div class="movie">
        <span class="text title">movie title</span>
        <p class="text2">
            Lorem, ipsum dolor sit amet consectetur adipisicing elit. At, sint fugit numquam dicta aperiam neque aliquam expedita ipsum sapiente assumenda rerum temporibus fuga similique sed, perspiciatis qui ipsa nihil adipisci.
        </p>
        <span class="text2">gen</span>
        <div class="container-cal">
            <span class="cal">4</span>
            <button class="cal-btn">qualify</button>
        </div>
    </div>
</div>

第二步:编写JS逻辑获取对应电影名称

推荐两种实现方式:

方式1:事件委托(优先选择,支持动态添加电影)

利用事件冒泡特性,给父容器绑定一次事件即可处理所有按钮的点击:

const movieContainer = document.getElementById('container-movies');

movieContainer.addEventListener('click', function(e) {
    // 确认点击的是评分按钮
    if (e.target.classList.contains('cal-btn')) {
        // 向上查找当前按钮所属的电影容器
        const currentMovie = e.target.closest('.movie');
        // 获取该电影的标题文本
        const movieTitle = currentMovie.querySelector('.title').textContent.trim();
        
        console.log('当前评分的电影:', movieTitle);
        // 此处可添加后续的评分修改逻辑
    }
});

方式2:逐个绑定事件(适合静态电影列表)

获取所有评分按钮,为每个按钮单独绑定点击事件:

const qualifyButtons = document.querySelectorAll('.cal-btn');

qualifyButtons.forEach(button => {
    button.addEventListener('click', function() {
        // 向上找到所属的电影容器
        const currentMovie = this.closest('.movie');
        const movieTitle = currentMovie.querySelector('.title').textContent.trim();
        
        console.log('当前评分的电影:', movieTitle);
    });
});

关键方法说明

  • closest('.movie'):从当前元素向上遍历DOM树,找到最近的匹配.movie选择器的父元素,精准定位按钮所属的电影项。
  • querySelector('.title'):在指定的电影容器内查找标题元素,避免获取到其他电影的标题内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:06:16