我使用HTML和JavaScript制作了一个简单的HTML网站,根据用户选择的属性推荐一首歌曲。我有一切正常工作,但是,例如,在下图中,第二个“else-if”语句和最后一个“else-if”语句最终返回第二个“else-if”语句的歌曲标题。在最后一个语句中,它将返回第二个“else-if”语句中的歌曲标题。看起来它忽略了最后一个“else-if”语句的the band[0].checked
部分条件。我不确定为什么它只是忽略了声明的那部分条件?我的这部分代码如下:
除了最后两个“else-if”语句之外,一切都按预期工作,因为我上面提到了这个问题。
var genre = document.getElementById("songGenre").value;
var bandList = document.getElementsByName("bandList");
var band = document.getElementsByName("band");
if (genre == "Rock" && bandList[0].checked && band[1].checked && band[2].checked) {
alert("Our song suggestion: Tip the Scales");
}
else if (genre == "Rock" && bandList[0].checked && band[1].checked && band[3].checked) {
alert("Our song suggestion: Savior");
}
else if (genre == "Rock" && bandList[0].checked && band[0].checked && band[2].checked) {
alert("Our song suggestion: Hero of War");
}
else if (genre == "Rock" && bandList[0].checked && band[0].checked && band[3].checked) {
alert("Our song suggestion: Swing Life Away");
}
else if (genre == "Rock" && bandList[0].checked && band[0].checked && band[1].checked && band[2].checked) {
alert("Our song suggestion: Entertainment");
}
else if (genre == "Rock" && bandList[0].checked && band[0].checked && band[1].checked && band[3].checked) {
alert("Our song suggestion: Elective Amnesia");
}
答案 0 :(得分:0)
这种情况正在发生,因为当条件:
String result = "";
if(str.length() < 3)
return str;
for(int i = 0; i <= str.length() - 2; i++){
if(str.charAt(i) == 't' && str.charAt(i + 2) == 'p'){
str.replaceAll(str.substring(i + 1, i + 2), "");
}
return str;
}
return str;
是真的,那么
(genre == "Rock" && bandList[0].checked && band[0].checked && band[1].checked && band[3].checked)
也是如此。
但是,由于您正在使用elseif,它将在第二个条件停止,而不是继续检查该行。
为了解决这个问题,您需要更改其他块的顺序,并将最具体的一个放在顶部,将更通用的放在底部。换句话说,将较长的复合体置于顶部,将简单的短复合体置于底部。
从特定订单修改订单后 - &gt;很简单,您将看到您的应用程序按预期运行。