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

点击包含HTML的列表项无法获取ID的技术解决方案问询

问题原因

你现在的问题出在e.target的指向——当点击

  • 内部的或时,e.target会指向这些子元素,而它们本身没有设置id,所以代码里的if (!e.target.id) return直接终止了后续逻辑,自然拿不到
  • 的id。

    这里给你两种可行的修改方案:

    方案1:直接给
  • 绑定点击事件
  • 把事件绑定目标从父级.words改成所有带id的

  • ,这样点击时绑定的元素就是
  • 本身,能直接获取id:

    var wordItems = document.querySelectorAll('.words li[id]');
    
    if (wordItems.length) {
        wordItems.forEach(item => {
            item.addEventListener('click', () => {
                console.log("id: " + item.id);
            });
        });
    }
    

    方案2:在父级事件中找到对应的
  • 如果需要保留父级.words的事件委托(适合后续动态添加

  • 的场景),可以用closest()方法从点击的元素向上查找最近的
  • ,再获取它的id:

    var words = document.querySelectorAll('.words');
    
    if (words.length) {
        words.forEach(word => {
            word.addEventListener('click', e => {
                // 找到最近的带id的li元素
                const targetLi = e.target.closest('li[id]');
                if (!targetLi) return;
                console.log("id: " + targetLi.id);
            });
        });
    }
    

    这两种方法都能解决点击

  • 内部元素时获取不到id的问题,方案2更适配动态列表场景,方案1则更直接简洁。

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

  • 相关产品推荐
    方舟 Agent Plan

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

    最近更新时间:2026.07.03 22:36:13