JavaScript中检查DOM元素src的IF语句未触发问题求助
问题分析与解决
你的代码存在两个核心问题导致IF语句无法触发,还有一处逻辑疏漏:
1. endsWith 方法调用错误
endsWith是字符串的方法,必须以字符串.endsWith(目标子串)的形式调用,而你写成了scene.endsWith == "Media/Town/Town_bw.png"——这里的scene.endsWith是方法本身的引用,和字符串永远不相等,所以IF条件永远不成立。
2. 匹配字符串与实际src不匹配
控制台输出的src是完整URL,但你试图匹配的是相对路径Media/Town/Town_bw.png。虽然完整URL的末尾是这个相对路径,但需要确保endsWith的目标字符串和实际结尾完全一致。
3. 逻辑疏漏:未更新DOM元素的src
你修改了scene变量的值,但没有把新路径赋值回图片元素的src属性,所以即使进入IF语句,图片也不会变化。
修正后的代码
const sceneImg = document.getElementById('sceneImageID'); const sceneSrc = sceneImg.src; console.log("scene before if: " + sceneSrc); // 修正endsWith调用,匹配完整URL的末尾部分 if (sceneSrc.endsWith("Media/Town/Town_bw.png")) { const newSrc = "Media/Town/Town_bw_noscrap.png"; sceneImg.src = newSrc; // 关键:更新DOM元素的src console.log("inside if statement: " + sceneImg.src); }
备选方案(更可靠的路径匹配)
如果担心域名或端口变化,可以通过URL对象提取路径部分再匹配:
const sceneImg = document.getElementById('sceneImageID'); const sceneUrl = new URL(sceneImg.src); // pathname会返回类似 "/Media/Town/Town_bw.png" if (sceneUrl.pathname.endsWith("/Media/Town/Town_bw.png")) { sceneImg.src = "Media/Town/Town_bw_noscrap.png"; console.log("inside if statement: " + sceneImg.src); }
内容的提问来源于stack exchange,提问作者SleepyWakes
相关产品推荐
相关产品推荐

