If/elseif 语句无效

If/elseif statements not working

由于我无法确定的原因,它没有被成功调用,我已经尝试了我能想到的一切,但似乎没有任何东西可以让它工作,它没有错误。

</p> <pre><img id="risk" src="assets/R0.png" width="100" height="150" style="border: dotted;"><br> <button id="ContinueBtn" onclick="Continue()">Continue</button> if (document.getElementById("risk").src == "assets/R0.png"){ document.getElementById("risk").src = "assets/R1.png"; } else if (document.getElementById("risk").src == "assets/R1.png"){ document.getElementById("risk").src = "assets/R2.png"; } else if (document.getElementById("risk").src == "assets/R2.png"){ document.getElementById("risk").src = "assets/RF.png"; document.getElementById("happiness").src = "assets/PF.png"; document.getElementById("main").src = "assets/fired.png"; alert("Debug") var Cont = document.getElementById("ContinueBtn"); Cont.parentNode.removeChild(Cont); }

当我向它添加一个 else 语句时,它通过了 if 和 elseif,使它看起来好像没有为 "risk"、

找到任何东西

</p> <pre>else{ alert("An error has occured! Try refreshing your page.") }

简答:

当您在 JS 中测试 .src 属性 时,某些浏览器会报告图像的 完整 路径,即使您的原始标记仅指定了相对路径小路。这意味着您的 == 比较将失败。

长答案:

假设代码块 在 元素创建之后调用 ,我想你会发现问题在于您在 html 中设置的 src 与您测试 .src 属性 时报告的内容不同。如果您的源代码为 src 设置了相对路径,您可能会发现浏览器报告的 .src 属性 值实际上是 完整 路径。所以,例如:

<img src="assets/R0.png">

...然后:

console.log(document.getElementById("risk").src);

...将记录 "http://www.yourdomainhere.com/fullpath/assets/R0.png"

== 比较时当然不相等。显然,您可以通过在第一个 if 之前添加一个 console.log() 语句来轻松地测试它(或者如果必须的话使用 alert() )。 每当您发现 if 语句没有按照您的预期执行时,首先要尝试的是添加表达式中涉及的变量的 console.log(),这样您就可以 当然他们有你认为的价值观。

如果那个发生了什么,那么你显然只需要使用字符串函数来提取路径的最后一个路径。例如:

var imgEl = document.getElementById("risk"),
    imgSrc = imgEl.src.split("/").pop();

if (imgSrc == "R0.png"){    
    imgEl.src = "assets/R1.png";
} else if (imgSrc == "R1.png") {
    imgEl.src = "assets/R2.png";
}
// etc.

我使用的代码 imgEl.src.split("/").pop() 采用完整路径并使用 .split() 创建一个数组,其中包含正斜杠之间的所有部分,然后 .pop() 获取最后一个 "piece",即最后一个数组元素。

(我还引入了一个变量 imgEl 来引用您的 img 元素,因为这比为同一元素重复调用 document.getElementById() 更简洁、更高效。

尝试使用正则表达式:

var risk = document.getElementById("risk");
if (risk.src.match("assets/R0.png")){    
    risk.src = "assets/R1.png";
} else if(condition) {
    ...
} else {
    ...
}