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

如何为NodeList中的每个seemore类div添加可用的click事件监听器

问题原因

addEventListener方法的第二个参数需要传入事件触发时才执行的回调函数引用,你当前直接写入了console.log("this is working"),这段代码会在JS执行到事件绑定这一行时立即运行,不会等待点击事件触发,所以会出现页面加载阶段直接打印9次、点击按钮无响应的问题。

修正代码

const movieIntegration = () => {
    // 优化:先拼接所有DOM字符串,一次性插入避免多次触发页面重绘
    let movieHtml = ''
    allMovies.forEach(movie => {
        movieHtml += `<div class="imgContainer">
                        <img src="${movie.img}" alt="${movie.name}">
                        <div class="titleContainer">
                            <div class="movieTitle"> ${movie.name} </div>
                            <div class="seemore"> See more </div>
                        </div>
                    </div>`
    })
    movieGallery.innerHTML = movieHtml

    const seemore = document.querySelectorAll(".seemore")
    seemore.forEach(elm => {
        // 将执行逻辑包裹在匿名函数中作为回调传入
        elm.addEventListener("click", () => {
            console.log("this is working")
            // 此处补充点击后展开详情的逻辑
        }, true)
    })
}

更优方案:事件委托

你也可以直接给父容器绑定事件,不需要循环遍历每个seemore元素,后续如果动态新增电影内容也不需要重新绑定事件:

const movieIntegration = () => {
    let movieHtml = ''
    allMovies.forEach(movie => {
        movieHtml += `<div class="imgContainer">
                        <img src="${movie.img}" alt="${movie.name}">
                        <div class="titleContainer">
                            <div class="movieTitle"> ${movie.name} </div>
                            <div class="seemore"> See more </div>
                        </div>
                    </div>`
    })
    movieGallery.innerHTML = movieHtml

    // 父容器绑定事件,通过事件冒泡判断点击目标
    movieGallery.addEventListener('click', (e) => {
        if(e.target.classList.contains('seemore')) {
            console.log("this is working")
            // 补充展开逻辑
        }
    }, true)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:45:02