我正在尝试将名称和饮食字段一次性推送到单个对象中,以便它控制台.log出类似
的内容group1: Array[some number]
[0]: Object
diet: "some diet"
name: "some name"
[1]: Object
diet: "some other diet"
name: "some other name"
group2: Array[some number]
[0]: Object
diet: "some diet"
name: "some name"
[1]: Object
diet: "some other diet"
name: "some other name"
[2]: Object
diet: "another diet"
name: "another name"
so on....
但是,我遇到一些逻辑错误导致console.log成为这样:
group1: Array[some number]
[0]: Object
diet: undefined
name: "some name"
[1]: Object
diet: undefined
name: "some other name"
group2: Array[some number]
[0]: Object
diet: undefined
name: "some name"
[1]: Object
diet: undefined
name: "some other name"
[2]: Object
diet: undefined
name: "another name"
so on....
我对jquery / javascript和php相比较新(3周所以不要刺伤我太多)和afaics似乎没有任何问题。我该如何解决这个问题?
这是我的代码:
var tso = {
group1: [],
group2: [],
ogroup: [],
igroup: [],
others: []
};
for (var k in tso) {
if (tso.hasOwnProperty(k)) {
var nameField = $("input[id*="+k+"]");
var dietField = $("select[id*="+k+"] option:selected");
$.each($(nameField, dietField), function() {
tso[k].push({name: $(this).closest('input').val(), diet: $(this).closest('select').val()});
});
}
};
console.log(tso);
答案 0 :(得分:1)
尝试执行for
,如下所示:
for (var k in tso) {
if (tso.hasOwnProperty(k)) {
var nameField = $("input[id*="+k+"]").val();
var dietField = $("select[id*="+k+"]").val();
tso[k].push({name: nameField, diet: dietField });
}
}
答案 1 :(得分:0)
好吧,玩了更多,并找到了一种方法来做到这一点。因为我有相同数量的输入和选择元素,所以我可以迭代哪个元素首先出现。在我的例子中,输入总是在select元素之前,因此我可以使用.next()命令来获取下一个元素。
for (var k in tso) {
if (tso.hasOwnProperty(k)) {
$("input[id*="+k+"]").each(function() {
tso[k].push({name: $(this).val(), diet: $(this).next().val()});
});
}
};
这个安慰
group1: Array[some number]
[0]: Object
diet: "American"
name: "some name"
[1]: Object
diet: "Western"
name: "some other name"
group2: Array[some number]
[0]: Object
diet: "Asian"
name: "some name"
[1]: Object
diet: "No preference"
name: "some other name"
[2]: Object
diet: "Vegetarian"
name: "another name"
so on....
如果元素不是彼此相邻,您可以使用.nextUntil(" selector")来选择下一个输入/选择/元素