我的java脚本数组的长度不是

时间:2015-07-06 18:17:28

标签: 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 " + 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时,它显示为空白。我确定这是因为inputData.lengthundefined。我的印象是将它声明为inputData = {};使其成为一个数组,因此具有默认长度值。如何将其更改为具有正确的长度?

修改

有几位评论者说var x = document.getElementById("newInventoryForm");应该返回null或节点,两者都没有length属性。在上面的代码中添加行已经产生了这个输出。

我的x.length属性18 serialNumber:456 someDatafield:someInput

2 个答案:

答案 0 :(得分:3)

您已将其声明为对象。

或许var inputData = [];会给你更好的结果。

答案 1 :(得分:0)

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

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