Javascript 为什么我会收到一个空警报框?
我在提交表单上有js函数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
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: