0

我试图通过我的函数在 while 循环中循环我的 if 语句。但它只会命中第一个 if 语句并停止循环。

样本:

while(No.length == 0 || Name.length == 0 || Tel.length == 0 
      || Date.length == 0 || Email.length == 0) {

    alert("Don't leave blank!");

    if (No.length == 0) {
        document.getElementById('Nos').style.visibility = 'visible';
        return false;   
    }

    if(Name.length == 0) {
        document.getElementById('Name').style.visibility = 'visible';
        return false;   
    }
    //continues same if statement for rest of the elements variables.
}

它只会转到第一个 if 语句,不会循环遍历它。

4

3 回答 3

2

您正在从循环内部返回;这打破了循环。如果要继续进行下一轮循环,请continue改用。如果您想跳出循环,但不想从整个函数返回,请使用break.

现在,如果您使用的是 jQuery 循环,因为它实际上只是一个函数,您可以使用 return:

$.each([1,2,3,4], function(index, x) {
    if (x < 4) return true; // equivalent to continue
    if (x == 4) return false; // equivalent to break
});

但这仅适用于 jQuery 循环,而不适用于 Javascript 标准循环。

于 2012-07-18T16:35:29.613 回答
1

我可以看到的第一个错误是您应该使用 '\' 转义警报,例如:

alert('Don\'t leave blank!');

如果你这样写,循环就会继续:

while(No.length == 0 || Name.length == 0 || Tel.length == 0 || Date.length == 0 || Email.length == 0) {

    if (No.length == 0) {
        document.getElementById('Nos').style.visibility = 'visible';
    }
    if(Name.length == 0) {
        document.getElementById('Name').style.visibility = 'visible';
    }
    return true;
}

也可以试试:

while(No.length == 0 && Name.length == 0 && Tel.length == 0 && Date.length == 0 && Email.length == 0) {

     document.getElementById('Nos').style.visibility = 'visible';      
     document.getElementById('Name').style.visibility = 'visible';
     continue;
}
于 2012-07-18T16:38:03.353 回答
0

也许这个?

function test_all_fields() {
    var No = document.getElementById('No');
    var Nos = document.getElementById('Nos');
    var Name = document.getElementById('Name');
    // ...
    Nos.style.visibility = (No.value.length==0) ? 'visible':'hidden';
    Names.style.visibility = (Name.value.length==0) ? 'visible':'hidden';
    //...
    //continues same if statement for rest of the elements variables.
    if (No.value.length >0 && Name.value.length >0 && Tel.value.length>0 && Date.value.length >0 && Email.value.length>0) {
        return true;
    }
    else {
        alert("Don\'t leave blank!");
        return false;
    }
}
于 2012-07-18T16:42:26.133 回答