这是我的javascript代码,当我按下按钮时,如果没有选择任何设置并且没有标记复选框,则警报窗口应该显示这两个消息,但此刻它只显示第一个是“请”检查所有方框“,我做错了什么,谢谢!
$('#movetoset').click(function() {
var fail = "";
if ($('#selectsett').val() === 'General') {
fail = "Please chooose a set.\n";
}
for (j = 0; j < array_str_idnum.length; j++) {
if (document.getElementById('check' + array_str_idnum[j]).checked) {
document.getElementById('imagediv' + array_str_idnum[j]).style.display = 'none';
// (Add to database here?)
array_str_idnum[j] = 'flag_gone'; // for example
}
if (document.getElementById('check' + array_str_idnum[j]).checked == false) {
fail = "Please check all the box.\n";
}
}
flag = false;
for (j = 0; j < array_str_idnum.length; j++) {
if (array_str_idnum[j] == 'flag_gone') {
flag = flag && true;
}
else {
flag = false
}
}
if (flag == true) {
$('#steptwo').hide();
$('#begin').fadeIn();
}
if (fail == "") {
return true;
} else {
alert(fail);
return false;
}
});
答案 0 :(得分:4)
您需要使用fail
附加到+=
变量,而不是覆盖/重新分配它:
// Before anything else, initialize:
var fail = "";
// Later...
// First error:
fail += "Please chooose a set.\n";
// Later still...
fail += "Please check all the box.\n";
答案 1 :(得分:0)
因为您分配给fail
两次而不是连接字符串(中间带有“\ n”,所以它们位于不同的行上)。
你可能想练习“玩电脑”,逐行浏览你的代码,写下完全每一步发生的事情。
我也不确定你处理flag
的循环是否符合你的意图,但说实话,我发现你的代码有点难以理解。