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 {
...
}
由于我无法确定的原因,它没有被成功调用,我已经尝试了我能想到的一切,但似乎没有任何东西可以让它工作,它没有错误。
</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 {
...
}