Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我会收到一个空警报框?_Javascript_Forms_Validation - Fatal编程技术网

Javascript 为什么我会收到一个空警报框?

Javascript 为什么我会收到一个空警报框?,javascript,forms,validation,Javascript,Forms,Validation,我在提交表单上有js函数 var bCancel = false; var errors = new Array(); function validateNewsForm(form) { if (bCancel) { return true; } else { errors = []; var statusArray = new Array(); statusArray.push(va

我在提交表单上有js函数

var bCancel = false;
var errors = new Array();
function validateNewsForm(form) {
    if (bCancel) {
        return true;
    } else {        
        errors = [];        
        var statusArray = new Array();
        statusArray.push(validateRequired(form));
        statusArray.push(validateMaxLength(form));
        statusArray.push(validateDate(form));

        for (status in statusArray) {
            if (!status) {              
                alert(errors.join('\n'));               
                return false;
            }
        }

        return true;
    }
}
validatesth()函数工作正常。但当我输入正确的数据时,我无法保存,因为我得到了空警报。我只有一条警告消息,现在所有的验证函数都给出了true(如果数据正确)

为什么我可以得到空警报

for (status in statusArray) {
    if (!status) {       
一个
for in
循环为您提供关键点。对于数组,这些是索引。所以你实际上是在做
!0
!1
等,以及
!0的计算结果为
true

您需要一个正常的
循环:

for(var i = 0; i < statusArray.length; i++) {
    if (!statusArray[i]) {
for(变量i=0;i
另外,您正在同时使用
[]
新数组()
。最好在任何地方都使用
[]

in
循环中的
为您提供键。对于数组,这些是索引。因此,您有效地执行了
!0
!1
等操作,并且
!0
的计算结果为

您需要一个正常的
循环:

for(var i = 0; i < statusArray.length; i++) {
    if (!statusArray[i]) {
for(变量i=0;i

另外,您正在同时使用
[]
新数组()
。最好在任何地方都使用
[]

因为对于
状态=0
!状态将为
true
。 修改代码:

for (var status  = 0; status < statusArray.length; status ++) {
            if (!statusArray[status] ) {              
                alert(errors.join('\n'));               
                return false;
            }
        }
for(var status=0;status
因为对于
状态=0
!状态将为
true
。 修改代码:

for (var status  = 0; status < statusArray.length; status ++) {
            if (!statusArray[status] ) {              
                alert(errors.join('\n'));               
                return false;
            }
        }
for(var status=0;status
请显示validateRequired/MaxLength/Date函数请显示validateRequired/MaxLength/Date函数需要注意的是,使用for-in循环处理数组的速度比使用for-in循环慢很多倍。查看jsperf:需要注意的是,使用for-in循环处理数组的速度比使用for-lo循环慢很多倍op.也看看jsperf: