我有一个HTML与4 inputRange滑块。如果用户单击按钮,则范围内的所有值都应该存储在嵌套的JSON对象中。到目前为止还不错,但是JS只保存了数组中的最后一个,而没有保存之前的其他数组。但是所有的滑块都有不同的值,从1到5,但是JS只保存了最后一个滑块中的4。这是我的密码:
//Speichert die aktuellen Angaben in einem Nested-JSON Objekt
function saveBewertung() {
var jsonObj = {};
var kriterien = [];
var bewertungen = {};
//Loop
$('input[type=range]').each(function() {
var id = $(this).attr("id");
var note = $(this).val();
bewertungen.id = id;
bewertungen.note = note;
kriterien.push(bewertungen);
jsonObj.Bewertungen = kriterien;
});
jsonObj.Kommentar = $('textarea#kommentar').val();
//TEST AUSGABE
alert(JSON.stringify(jsonObj));
}结果:

发布于 2018-02-23 09:09:06
您正在一次又一次地将同一个对象推到数组中。每次在bewertungen块中都需要初始化each。
申报
var bewertungen = {};在each块内部
$('input[type=range]').each(function() {
var bewertungen = {};
var id = $(this).attr("id");
var note = $(this).val();
bewertungen.id = id;
bewertungen.note = note;
kriterien.push(bewertungen);
});
jsonObj.Bewertungen = kriterien; //this line can be moved out发布于 2018-02-23 09:19:23
@gurvinder372 372解决方案旁边的另一种可能是缩短函数,这样就不需要声明变量bewertungen、id和note
//Speichert die aktuellen Angaben in einem Nested-JSON Objekt
function saveBewertung() {
var jsonObj = {};
var kriterien = [];
//Loop
$('input[type=range]').each(function() {
// Anonymous object
kriterien.push({
id: $(this).attr("id"),
note: $(this).val()
});
});
jsonObj.Bewertungen = kriterien;
jsonObj.Kommentar = $('textarea#kommentar').val();
//TEST AUSGABE
alert(JSON.stringify(jsonObj));
}发布于 2018-02-23 09:44:34
这里有一些关于这个东西是如何工作的描述。
var bewertungen = {}; // this line declare the object this object will hold values in each loop.
$('input[type=range]').each(function() {
var bewertungen = {};
var id = $(this).attr("id");
var note = $(this).val();
bewertungen.id = id; // this line add value to {bewertungen} object key
bewertungen.note = note; // this line add value to {bewertungen} object key
kriterien.push(bewertungen); // every itration will push value to [kriterien] array
});
jsonObj.Bewertungen = kriterien; // this is final array with all valueshttps://stackoverflow.com/questions/48944427
复制相似问题