点击多张图片切换时e.target.src返回undefined的问题排查
问题原因及解决办法
报错的核心原因是你点击的目标不一定是图片元素——比如点击到了图片的父容器(比如div、span这类包裹元素),此时e.target不是<img>标签,自然没有src属性,赋值给目标图片的src就会变成undefined,浏览器就会去请求undefined这个不存在的路径,导致报错。
修复方案
在事件处理里先判断点击的元素是否为图片,只有是<img>时才执行切换逻辑:
let special_countries_element_image = document.getElementById("special_countries_element_image"); function changeImage(element, e) { // 先确认点击的是图片元素 if (e.target.tagName.toLowerCase() === 'img') { element.src = e.target.src; } } container_countries.addEventListener('click', function(e) { changeImage(special_countries_element_image, e); });
额外优化建议
如果你的图片是被其他元素包裹的(比如每个图片都在一个<div class="country-item">里),还可以用closest()方法精准找到父容器里的图片,避免误判:
function changeImage(element, e) { // 从点击元素向上找最近的img标签 const clickedImg = e.target.closest('img'); if (clickedImg) { element.src = clickedImg.src; } }
内容的提问来源于stack exchange,提问作者DaceWooow
相关产品推荐
相关产品推荐

