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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 06:15:45