原生JS按钮图片切换功能失效,请求问题排查
问题原因
eng.src返回的是完整的绝对URL(比如http://localhost:8000/England.jpeg),而你直接和相对路径./England.jpeg做相等比较,条件永远不成立,所以切换逻辑不会执行。
解决方法
提供三种可行的修复方案,按需选择:
方案1:使用getAttribute('src')获取相对路径
直接读取元素的src属性原始值(相对路径形式),和目标路径比较:
btn1.addEventListener('click', function(){ if (eng.getAttribute('src') == "./England.jpeg"){ eng.src = './England2.jpeg'; }else { eng.src = './England.jpeg'; } })
方案2:检查URL的结尾部分
通过判断完整URL的末尾是否包含目标文件名来做条件判断:
btn1.addEventListener('click', function(){ if (eng.src.endsWith("England.jpeg")){ eng.src = './England2.jpeg'; }else { eng.src = './England.jpeg'; } })
方案3:用自定义属性记录状态
给图片元素加自定义属性标记当前显示状态,完全避免路径比较的问题:
<!-- 修改img标签,添加自定义属性 --> <img id="eimg" src="./England.jpeg" data-current="first" class="card-img-top" alt="Silhouette of England">
btn1.addEventListener('click', function(){ if (eng.dataset.current === "first"){ eng.src = './England2.jpeg'; eng.dataset.current = "second"; }else { eng.src = './England.jpeg'; eng.dataset.current = "first"; } })
额外说明
btn2和btn3是直接赋值修改路径,没有做条件判断,所以不受路径格式影响,能正常工作。
内容的提问来源于stack exchange,提问作者Shanahando
相关产品推荐
相关产品推荐

