Javascript 我的java脚本数组没有长度

Javascript 我的java脚本数组没有长度,javascript,razor,model-view-controller,Javascript,Razor,Model View Controller,我有以下代码: //Populate inputData with the values of the input text boxes, in order var inputData = {}; var x = document.getElementById("newInventoryForm"); //Added this following line in the edit $('#additionalContent').append("My x.length property " +

我有以下代码:

//Populate inputData with the values of the input text boxes, in order
var inputData = {};
var x = document.getElementById("newInventoryForm");

//Added this following line in the edit
$('#additionalContent').append("My x.length property " + x.length + "<br/>");

for (var i = 0; i < x.length - 1; i++) {// -1 so we don't get the submit button
    var addData = {
        id : x[i].id,
        value : x[i].value
    };
    inputData[i] = addData;
    $('#additionalContent').append(inputData[i].id + " : " + inputData[i].value + "<br/>");
}
我正在尝试将表单数据从以前生成的表单传递到另一个javascript函数。在我这么做之前,我已经尝试让它在同一个.js页面中工作,但是当我尝试通过for循环输出输入数据时,它显示为空白。我确定这是因为inputData.length未定义。我的印象是,将其声明为inputData={};使其成为数组,因此具有默认长度值。我怎样才能将其更改为正确的长度

编辑 一些评论者说var x=document.getElementByIdnewInventoryForm;应返回null或节点,两者都没有长度属性。在上面的代码中添加这一行,就产生了这个输出

我的x.length属性18 序列号:456 someDatafield:someInput是一个对象,而不是数组。 你想要[]

此外,getElementById不返回数组;你的整个代码毫无意义。

{}是一个对象,而不是数组。 你想要[]

此外,getElementById不返回数组;你的整个代码毫无意义。

{}是一个对象,而不是数组。 你想要[]

此外,getElementById不返回数组;你的整个代码毫无意义。

{}是一个对象,而不是数组。 你想要[]


此外,getElementById不返回数组;您的整个代码毫无意义。

您已将其声明为对象


或许var inputData=[];将为您提供更好的结果。

您已将其声明为对象


或许var inputData=[];将为您提供更好的结果。

您已将其声明为对象


或许var inputData=[];将为您提供更好的结果。

您已将其声明为对象


或许var inputData=[];将给您带来更好的结果。

下面的SLaks说明了一个很好的观点。也许您需要var x=$'newInventoryForm';也可能是需要研究的地方。@jordavidson奇怪的是,他说它不返回数组,因为我的代码是有效的。只是inputData.length由于明显的原因现在不起作用,谢谢。它会生成像id、value这样的表单数据,这是不应该工作的吗?我是否应该将其更改为var x=$'newInventoryForm';为了确保它一直工作?使用jQuery符号可以让您确定地进行迭代,但它可能不是您想要的。看看您使用var x=$'newInventoryForm'.serializeArray获得的数组;下面的渣很好地说明了这一点。也许您需要var x=$'newInventoryForm';也可能是需要研究的地方。@jordavidson奇怪的是,他说它不返回数组,因为我的代码是有效的。只是inputData.length由于明显的原因现在不起作用,谢谢。它会生成像id、value这样的表单数据,这是不应该工作的吗?我是否应该将其更改为var x=$'newInventoryForm';为了确保它一直工作?使用jQuery符号可以让您确定地进行迭代,但它可能不是您想要的。看看您使用var x=$'newInventoryForm'.serializeArray获得的数组;下面的渣很好地说明了这一点。也许您需要var x=$'newInventoryForm';也可能是需要研究的地方。@jordavidson奇怪的是,他说它不返回数组,因为我的代码是有效的。只是inputData.length由于明显的原因现在不起作用,谢谢。它会生成像id、value这样的表单数据,这是不应该工作的吗?我是否应该将其更改为var x=$'newInventoryForm';为了确保它一直工作?使用jQuery符号可以让您确定地进行迭代,但它可能不是您想要的。看看您使用var x=$'newInventoryForm'.serializeArray获得的数组;下面的渣很好地说明了这一点。也许您需要var x=$'newInventoryForm';也可能是需要研究的地方。@jordavidson奇怪的是,他说它不返回数组,因为我的代码是有效的。只是inputData.length由于明显的原因现在不起作用,谢谢。它会生成像id、value这样的表单数据,这是不应该工作的吗?我是否应该将其更改为var x=$'newInventoryForm';为了确保它一直工作?使用jQuery符号可以让您确定地进行迭代,但它可能不是您想要的。看看您使用var x=$'newInventoryForm'.serializeArray获得的数组;