Javascript for循环的行为方式类似于2=21
我发现了很多关于表单javascript验证函数的讨论,但没有发现有人遇到这个问题 在下面的代码中,即使数组“fields[]”中有21个值,for循环在2次迭代后结束。它弹出的最后一个警报是“1<21”-好像它认为2不小于21 我认为这可能是一个数据类型错误,但无法理解。感谢所有能看到它的人Javascript for循环的行为方式类似于2=21,javascript,for-loop,Javascript,For Loop,我发现了很多关于表单javascript验证函数的讨论,但没有发现有人遇到这个问题 在下面的代码中,即使数组“fields[]”中有21个值,for循环在2次迭代后结束。它弹出的最后一个警报是“1
var fields = new Array;
var fields = [
document.forms["survey"]["Q1Age"].value,
document.forms["survey"]["Q2Gender"].value,
document.forms["survey"]["Q3Education"].value,
document.forms["survey"]["Q4Field"].value,
document.forms["survey"]["Q6Other"].value,
document.forms["survey"]["Q7Edited"].value,
document.forms["survey"]["UserAccount"].value,
document.forms["survey"]["Whole"].value,
document.forms["survey"]["Sections"].value,
document.forms["survey"]["Images"].value,
document.forms["survey"]["Keywords"].value,
document.forms["survey"]["writing"].value,
document.forms["survey"]["trustworthy"].value,
document.forms["survey"]["accuracy"].value,
document.forms["survey"]["bias"].value,
document.forms["survey"]["info"].value,
document.forms["survey"]["Viz1"].value,
document.forms["survey"]["Viz2"].value,
document.forms["survey"]["VizDescription"].value,
document.forms["survey"]["VizOver"].value,
document.forms["survey"]["submit2"].value
];
var err = 0;
//Start Validation Loop
for(var i = 0; i < fields.length; i++) {
alert(i + " < " + fields.length); //test how many iterations
//Check Fields in Array to Make Sure they are not Empty
if(fields[i].value == "" || fields[i].value == "Select One") {
err++;
}
}
if(err === 0) {
//Submit Form
//document.survey.submit();
return true;
} else {
//If there are errors, return false and alert the user
alert("Please fill out all of the fields.");
return false;
}
}
var字段=新数组;
变量字段=[
文件。表格[“调查”][“Q1Age”]。价值,
文件。表格[“调查”][“性别”]。价值,
文件。表格[“调查”][“教育”]。价值,
文件。表格[“调查”][“Q4Field”]。值,
文件。表格[“调查”][“Q6其他”]。价值,
文件。表格[“调查”][“Q7编辑”]。值,
文档。表格[“调查”][“用户帐户”]。值,
文件。表格[“调查”][“整体”]。价值,
文件。表格[“调查”][“章节”]。价值,
文档。表格[“调查”][“图像”]。值,
文档。表格[“调查”][“关键字”]。值,
文件。表格[“调查”][“写作”]。价值,
文件。表格[“调查”][“值得信赖”]。价值,
文件。表格[“调查”][“准确性”]。价值,
文件。表格[“调查”][“偏差”]。价值,
文件。表格[“调查”][“信息”]。值,
文件。表格[“调查”][“Viz1”]。价值,
文件。表格[“调查”][“Viz2”]。价值,
文件。表格[“调查”][“说明”]。价值,
文件。表格[“调查”][“维佐弗”]。价值,
文件。表格[“调查”][“提交”]。价值
];
var-err=0;
//启动验证循环
对于(变量i=0;i
由于在创建数组时获取输入的值,因此数组元素已经是字符串,因此在if语句中,您试图从字符串获取属性值
,这可能导致脚本结束,因为它试图访问未定义的属性
你的if语句应该是这样的
if(fields[i] == "" || fields[i] == "Select One") {
err++;
}
我觉得你的代码还可以。控制台中是否没有错误消息?很可能在检查字段[i]的行中出现中断。值(值甚至是现有属性吗?)检查值不为null。我认为document.forms[“survey”][“Q3Education”]。值返回null。警惕();所有的数组值,让我更清楚。实际上,我收到了两个警报,在循环的前两次迭代中,I=0和I=1各有一个警报。然后它会因为某些原因而结束。您的控制台是否显示任何异常?它们可能会中断循环…@Aniket:现有输入的.value
属性应该始终是字符串,而不是null。他在声明数组时已经获得了值,因此他的if语句基本上是执行类似于document.forms[“survey”][“qlage”]的操作。value.value
正确。知道了。他试图访问数组元素上的.value
,该元素是字符串。Thank.awesome,Thank.value从表单字段中获取了值,我再次错误地使用了它。(是的……她试图访问字符串上的值)。@Andii:但这不应该使循环在第二次迭代时停止。是吗?