Javascript表现得很奇怪

Gab*_*yer 1 javascript jquery

以下功能不起作用,因为我认为应该有.出于某种原因,只要validate函数返回false,循环就会中断.这是为什么?

这是我的代码:

function validateGroup(input) {
    if (!input.value.match(/^[0-9]{0,2}$/)) {
        $(input).addClass("invalidField");
        return false;
    }
    $(input).removeClass("invalidField");
    return true;
}

function validateClass(input) {
    if (!input.value.match(/^[a-zA-Z0-9-]{0,9}$/)) {
        $(input).addClass("invalidField");
        return false;
    }
    $(input).removeClass("invalidField");
    return true;    
}

function validateData() {
    var rows = document.getElementsByTagName("tbody")[0].getElementsByTagName("tr");

    var valid = true;

    for (var i = 0, arrayLength = rows.length; i < arrayLength; ++i) {
        valid = valid && validateClass(rows[i].getElementsByTagName("input")[0]);
        valid = valid && validateGroup(rows[i].getElementsByTagName("input")[1]);
        valid = valid && validateGroup(rows[i].getElementsByTagName("input")[2]);     
    }
    return valid;
}
Run Code Online (Sandbox Code Playgroud)

非常感谢!

Sha*_*aun 12

如果valid为false,则语句valid && validateClass(...)将不会调用validateClass方法.我想你想要做的就是改变那些顺序

valid = validateClass(rows[i].getElementsByTagName("input")[0]) && valid;
valid = validateGroup(rows[i].getElementsByTagName("input")[1]) && valid;
valid = validateGroup(rows[i].getElementsByTagName("input")[2]) && valid;
Run Code Online (Sandbox Code Playgroud)

如果它已经知道结果为false,则Javascript不会考虑评估&&表达式的其余部分.