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

JavaScript如何在点击事件中获取对应li内的图片与文本值

实现方法

你现有代码的核心问题是没有正确拿到绑定事件的li元素本身,直接使用event.target会在点击li内部的img/span子元素时拿到错误的节点,按以下修改即可实现需求:

方案1:保留内联事件的快速修改方式

  • 第一步:修改li上的onclick属性,把当前li元素作为参数传入函数
    把所有li标签上的onClick="reply_click();"改为onClick="reply_click(this);"
  • 第二步:修改JS函数,从传入的li节点中提取对应内容
function reply_click(liItem) {
  // 获取li的id
  const currentId = liItem.id;
  // 获取li下图片的地址
  const imgSrc = liItem.querySelector('img').src;
  // 获取li下的文本值
  const textValue = liItem.querySelector('.coinText').textContent.trim();

  console.log('选中项id:', currentId);
  console.log('图片地址:', imgSrc);
  console.log('文本内容:', textValue);
}

CSS部分不需要做任何改动,修改后点击任意li位置,都能正确拿到对应的数据。

方案2:更推荐的事件委托写法(无内联事件)

不需要给每个li加onclick属性,直接给外层ul绑定一次事件即可,后续动态新增的列表项也能自动响应点击,维护成本更低:

// 等待DOM加载完成后绑定事件
document.addEventListener('DOMContentLoaded', function() {
  const coinList = document.querySelector('.coinList');
  coinList.addEventListener('click', function(e) {
    // 向上查找最近的li元素,兼容点击li内部子元素的场景
    const currentLi = e.target.closest('li');
    if (!currentLi || !coinList.contains(currentLi)) return;

    const currentId = currentLi.id;
    const imgSrc = currentLi.querySelector('img').src;
    const textValue = currentLi.querySelector('.coinText').textContent.trim();
    
    console.log('选中项id:', currentId);
    console.log('图片地址:', imgSrc);
    console.log('文本内容:', textValue);
  })
})

对应的HTML可以简化为:

<ul class="coinList">
  <li id="1">
    <img src="https://via.placeholder.com/140x100" />
    <span class="coinText">one</span>
  </li>
  <li id="2">
    <img src="https://via.placeholder.com/140x100" />
    <span class="coinText">two</span>
  </li>
</ul>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 02:27:26