Javascript If/elseif语句不工作

Javascript If/elseif语句不工作,javascript,html,Javascript,Html,由于一个我无法确定的原因,这个没有被成功调用,我已经尝试了我能想到的一切,但似乎没有什么能让它工作,它没有错误 简短答复: 在JS中测试.src属性时,某些浏览器会报告图像的完整路径,即使原始标记只指定了相对路径。这意味着您的==比较将失败 长答覆: 假设在创建元素之后调用代码块,我认为您会发现问题在于您在html中设置的src与您测试.src属性时报告的不一样。如果源代码为src设置了相对路径,您可能会发现浏览器报告的.src属性值实际上是完整路径。因此,例如: <img src="as

由于一个我无法确定的原因,这个没有被成功调用,我已经尝试了我能想到的一切,但似乎没有什么能让它工作,它没有错误

简短答复:

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

长答覆:

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

<img src="assets/R0.png">
…将记录http://www.yourdomainhere.com/fullpath/assets/R0.png

当你与==比较时,这当然是不相等的。显然,您可以通过在第一个if之前添加console.log语句或在必须时使用警报来轻松测试这一点。每当您发现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获取最后一个片段,即最后一个数组元素

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

尝试使用RegExp:

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

那个代码是从哪里调用的?请显示相关的html。如果src以…R0.png开头,第一个如果更改它,那么第二个如果再次更改它,那么第三个如果第三次更改它,是否会连续更改?它们应该是else if语句吗?为什么要设置一个值,然后在下一行测试相同的值?对不起!我忘记了我的调试是为了测试哪个if语句被破坏,尽管这是不确定的。在第一个if之前添加一个console.logdocument.getElementByIdrisk.src,以确认它的实际值。请向我们展示HTML代码并解释您试图测试的内容^^^^我认为还没有真正的问题,OP缺少相关答案的信息。虽然这应该有助于解决问题,但我确实希望他的问题能有所改进,以便对其他人有所帮助。@Frederik.L-嗯,我对最有可能出现的问题进行了最好的猜测。OP说没有错误,所以我认为这意味着代码运行了,但if条件都不匹配。我谈论的.src问题解释了原因。但是,是的,如果OP没有提到一些非常重要的事情,我可能会错。我同意答案,只是指出if/elseif不起作用可能无法用来找到这个答案。因此,在OP给出更多细节之前,这可能会伤害答案的帮助性。@AleveWinter,我很高兴它帮助了你。
console.log(document.getElementById("risk").src);
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.
var risk = document.getElementById("risk");
if (risk.src.match("assets/R0.png")){    
    risk.src = "assets/R1.png";
} else if(condition) {
    ...
} else {
    ...
}