我正在尝试构建一个可重用的函数来拉取json结果并写回页面
到目前为止,我得到了json,当它返回时运行一个函数,它传递索引和结果的一些数据。一切正常
问题是当我围绕函数中的结果进行迭代时(见下文)
有时数据结构可能是data.userGroup.form,有时也可能是data.userGroup.user等等
我试图做的是将我想要使用的名称作为最后一个参数传递给函数,即“user”和内部.each调用element.name(其中名称可以变化),但这不起作用。有人可以帮忙吗?
这是代码
$.when(promise).then(function(result) {
$(result.data.userGroup).each(function(index, element) {
var html = getHTML( ["Name", "Delete"], index, element, "user");
$("#accordion2").append(html);
});
})
function getHTML(array, index, element, name) {
var html = " <div class='accordion-group'>";
html = html + "<div class='accordion-heading'>";
html = html + "<span class='accordian-image'></span>" + element.name + "</a>";
var inner ="";
$(element.name).each(function(i, result) {
inner = inner + "<tr><td>" + result.name + "</td>" ;
});
html = html + inner;
return html;
}
答案 0 :(得分:1)
您需要使用bracket notation代替dot notation作为member operator。
element[name]
实施例
$.when(promise).then(function(result) {
$(result.data.userGroup).each(function(index, element) {
var html = getHTML( ["Name", "Delete"], index, element, "user");
$("#accordion2").append(html);
});
})
function getHTML(array, index, element, name) {
var html = " <div class='accordion-group'>";
html = html + "<div class='accordion-heading'>";
html = html + "<span class='accordian-image'></span>" + element[name] + "</a>";
var inner ="";
$(element.name).each(function(i, result) {
inner = inner + "<tr><td>" + result[name] + "</td>" ;
});
html = html + inner;
return html;
}