Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.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 for循环的行为方式类似于2=21_Javascript_For Loop - Fatal编程技术网

Javascript for循环的行为方式类似于2=21

Javascript for循环的行为方式类似于2=21,javascript,for-loop,Javascript,For Loop,我发现了很多关于表单javascript验证函数的讨论,但没有发现有人遇到这个问题 在下面的代码中,即使数组“fields[]”中有21个值,for循环在2次迭代后结束。它弹出的最后一个警报是“1

我发现了很多关于表单javascript验证函数的讨论,但没有发现有人遇到这个问题

在下面的代码中,即使数组“fields[]”中有21个值,for循环在2次迭代后结束。它弹出的最后一个警报是“1<21”-好像它认为2不小于21

我认为这可能是一个数据类型错误,但无法理解。感谢所有能看到它的人

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:但这不应该使循环在第二次迭代时停止。是吗?