0

我正在加载一个 JSON 文件,其中包含如下内容:

"forget": {
    "form_elements": 2,

    "input1": {
        "type": "text",
        "placeholder": "E-mail adres invullen...",
        "value": ""
    },
    "input2": {
        "type": "submit",
        "placeholder": "",
        "value": "Opvragen"
    }
}

我正在创建这个 JSON 内容的 div,一切正常(有更多 JSON 内容,但只有这与我的问题相关)。

创建元素后,我使用此循环遍历输入:

    for (var i = 1; i <= data[get].form_elements; i++) {
        var input = data[get].input+i;

        $overlay.append( $("<input />").attr({
            type: input.type,
            placeholder: input.placeholder,
            value: input.value
        }));
    }

覆盖是我刚刚创建的。使用此代码插入了 2 个基本输入字段,没有类型、占位符和值。那是因为这段代码不起作用:

var input = data[get].input+i;

但是当我使用这个时:

var input = data[get].input1;
var input = data[get].input2;

一切正常。

当我在循环中记录“i”变量时,看到数字正在上升。

我还认为我必须使用.toString将其转换为字符串,但这也行不通。

所以我的问题是,为什么这不起作用?我能做些什么呢?我希望我能很好地解释我的问题。谢谢转发。

4

1 回答 1

2

你这样做的方式并不是一个好方法:你尝试使用一个对象来模拟一个数组。

首先,如果您这样做,您的代码应该可以工作:

var input = data[get]["input"+i];

其次,我建议您将内容更改为:

          "forget": {
            "input1": {
                    "type": "text",
                    "placeholder": "E-mail adres invullen...",
                    "value": ""
            },
            "input2": {
                    "type": "submit",
                    "placeholder": "",
                    "value": "Opvragen"
            }
    }

你的循环应该是:

for (var key in data[get]) {
    var input = data[get][key];
    ...
}

如果你真的想使用一个数组,你应该把它作为你的 JSON 数据:

            "forget":  [
                    {
                            "type": "text",
                            "placeholder": "E-mail adres invullen...",
                            "value": ""
                    },
                    {
                            "type": "submit",
                            "placeholder": "",
                            "value": "Opvragen"
                    }
            ];
            for(var i = 0, len = data[get].length; i < len ; i++){
                                    var input = data[get][i];
                ...
            }

我建议您选择两种方法中的一种。

数组和对象的操作方式不同,因此您必须根据需要选择要使用的类型。

于 2013-10-31T12:37:04.617 回答