我试图一次将名称和饮食字段推入一个对象中,这样它就可以console.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);发布于 2014-07-08 13:20:29
好吧,多玩一玩,找个方法来做。由于我有相同数量的输入和选择元素,所以我可以迭代哪个元素是第一位的。在我的例子中,输入总是在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(“选择器”)来选择下一个输入/选择/元素
发布于 2014-07-06 06:26:57
尝试按以下方式执行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 });
}
}https://stackoverflow.com/questions/24593180
复制相似问题