我正在尝试根据检索到的JSON对象填充输入字段。我表单中的字段名称类似于:
对于上述字段,该函数应返回类似下面的内容
我应该如何编写一个返回给定HTML字段名称的匹配JSON条目的函数?
答案 0 :(得分:2)
你可以使用附加的方法,它将递归地查找JSON对象中的给定路径,如果没有匹配则将回退到默认值(def)。
var get = function (model, path, def) {
path = path || '';
model = model || {};
def = typeof def === 'undefined' ? '' : def;
var parts = path.split('.');
if (parts.length > 1 && typeof model[parts[0]] === 'object') {
return get(model[parts[0]], parts.splice(1).join('.'), def);
} else {
return model[parts[0]] || def;
}
}
你可以这样称呼它:
get(aData, 'country.XXX.XXXX', ''); //traverse the json object to get the given key
答案 1 :(得分:1)
迭代表单元素,获取其名称,拆分为“。”,然后访问JSON对象?
类似的东西:
var getDataValueForField = function (fieldName, data) {
var namespaces = fieldName.split('.');
var value = "";
var step = data;
for (var i = 0; i < namespaces.length; i++) {
if (data.hasOwnProperty(namespaces[i])) {
step = step[namespaces[i]];
value = step;
} else {
return (""); // safe value
}
}
return (value);
};
var populateFormFields = function (formId, data) {
var fields = document.querySelectorAll('#' + formId + ' input');
for (var i = 0; i < fields.length; i++) {
fields[i].value = getDataValueForField(fields[i].name, data);
}
};
populateFormFields('myForm', fetchedFromSomeWhere());