我正在加载一个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
}));
}
Overlay是我刚刚创建的。 使用此代码,插入了2个基本输入字段,没有类型,占位符和值。那是因为这段代码不起作用:
var input = data[get].input+i;
但是当我使用它时:
var input = data[get].input1;
var input = data[get].input2;
一切正常。
当我在循环中记录“i”变量时,会看到数字 升序。
我还认为我必须将它转换为带有 .toString 的字符串,但这也不起作用。
所以我的问题是,为什么这不起作用?我能做些什么呢? 我希望我能很好地解释我的问题。谢谢你。
答案 0 :(得分: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];
...
}
我建议你选择两种方法中的一种。
数组和对象的操作方式不同,因此您必须根据需要选择使用哪种类型。