我正在尝试获取数组fields
中o
对象的值。我无法获得房产内的价值。我做错了什么?
var o = {
"templatename": "sdgds",
"fields": {
"s1_req_1": 1,
"s1_req_2": 1,
"s1_req_3": 1,
"s1_req_4": 1,
"s1_req_5": 1,
"s1_req_6": 1,
"s1_req_7": 1,
"s1_req_8": 1,
"s1_req_9": 1,
"s1_req_10": 1,
"s1_req_11": 1,
"s1_req_12": 1,
"s1_req_13": 1,
"s1_req_14": 1,
"v1_dm_1": 1,
"v1_dm_5": 1,
"v1_dm_6": 1,
"f1_fs_3": 1,
"f1_fs_1": 1,
"f1_fs_2": 1,
"e3_eh_19": 1,
"f1_fs_11": 1,
"s3_sh_1": 1,
"s3_sh_6": 1,
"s3_sh_7": 1,
"v1_dm_7": 1,
"v1_dm_13": 1,
"v1_dm_9": 1
},
"customerid": 'SMRTsspd'
};
$('#template').val(o.templatename);
$(o.fields).each(function(t) {
$('input[value=' + t.name + ']').prop('checked', true);
});
答案 0 :(得分:2)
你可以在没有jquery的情况下遍历对象:
Object.keys(o.fields).forEach(function (key) {
$('input[value=' + key + ']').prop('checked', o.fields[key]);
});
正如其他人所说,o.fields
是一个对象,因此要迭代其值,您需要首先通过Object.keys(o.fields)
方法提取其键。然后,您可以通过简单的Array.forEach(keys)
迭代这些键。最后要使用该值,您只需执行o.fields[key]
即可。
或者使用jquery,使用它:
$.each(o.fields, function(key, value) {
$('input[value=' + key + ']').prop('checked', value);
});
答案 1 :(得分:1)
使用 For-In 您可以使用For-In循环枚举对象以获取每个键值对。
for(var key in o.fields){
if (o.fields.hasOwnProperty(key)) {
$('input[value=' + key + ']').prop('checked', true);
}
}
var o = {
"templatename": "sdgds",
"fields": {
"s1_req_1": 1,
"s1_req_2": 1,
"s1_req_3": 1,
"s1_req_4": 1,
"s1_req_5": 1,
"s1_req_6": 1,
"s1_req_7": 1,
"s1_req_8": 1,
"s1_req_9": 1,
"s1_req_10": 1,
"s1_req_11": 1,
"s1_req_12": 1,
"s1_req_13": 1,
"s1_req_14": 1,
"v1_dm_1": 1,
"v1_dm_5": 1,
"v1_dm_6": 1,
"f1_fs_3": 1,
"f1_fs_1": 1,
"f1_fs_2": 1,
"e3_eh_19": 1,
"f1_fs_11": 1,
"s3_sh_1": 1,
"s3_sh_6": 1,
"s3_sh_7": 1,
"v1_dm_7": 1,
"v1_dm_13": 1,
"v1_dm_9": 1
},
"customerid": 'SMRTsspd'
};
$('#template').val(o.templatename);
for (var key in o.fields) {
if (o.fields.hasOwnProperty(key)) {
$('input[value=' + key + ']').prop('checked', true);
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='checkbox' value='s1_req_1'>
<input type='checkbox' value='s1_req_2'>
<input type='checkbox' value='s1_req_3'>
<input type='checkbox' value=''>
<input type='checkbox' value=''>
答案 2 :(得分:1)
因为post标签是jquery
,所以我特意提供了一个特定于jQuery的解决方案$.each
。
对于Vanilla JS解决方案,请查看SO Post:How do I loop through or enumerate a JavaScript object?
var o = {
"templatename": "sdgds",
"fields": {
"s1_req_1": 1,
"s1_req_2": 1,
"s1_req_3": 1,
"s1_req_4": 1,
"s1_req_5": 1,
"s1_req_6": 1,
"s1_req_7": 1,
"s1_req_8": 1,
"s1_req_9": 1,
"s1_req_10": 1,
"s1_req_11": 1,
"s1_req_12": 1,
"s1_req_13": 1,
"s1_req_14": 1,
"v1_dm_1": 1,
"v1_dm_5": 1,
"v1_dm_6": 1,
"f1_fs_3": 1,
"f1_fs_1": 1,
"f1_fs_2": 1,
"e3_eh_19": 1,
"f1_fs_11": 1,
"s3_sh_1": 1,
"s3_sh_6": 1,
"s3_sh_7": 1,
"v1_dm_7": 1,
"v1_dm_13": 1,
"v1_dm_9": 1
},
"customerid": 'SMRTsspd'
};
$('#template').val(o.templatename);
$.each(o.fields, function(key, value) {
console.log(key + ":" + value);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
答案 3 :(得分:1)
我没有得到你。从我的理解。
$(o.fields)没有任何意义。
o.fields应该是一个数组,以便使用每个。 尝试将代码更改为
"fields": [
{"s1_req_1": 1}
{"s1_req_2": 1},
......]
和'name'没有关键名称。
o.fields.each(函数(T){
});
你能发布完整的代码吗?