警报未完全显示

时间:2011-09-15 01:13:42

标签: javascript

这是我的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;
    }
});

2 个答案:

答案 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的循环是否符合你的意图,但说实话,我发现你的代码有点难以理解。