检查是否已选中HTML复选框

时间:2017-04-14 21:37:16

标签: javascript html

我使用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");
}

1 个答案:

答案 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;很简单,您将看到您的应用程序按预期运行。