首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript只存储在JSON对象中的循环中的最后一个

Javascript只存储在JSON对象中的循环中的最后一个
EN

Stack Overflow用户
提问于 2018-02-23 09:06:36
回答 3查看 51关注 0票数 1

我有一个HTML与4 inputRange滑块。如果用户单击按钮,则范围内的所有值都应该存储在嵌套的JSON对象中。到目前为止还不错,但是JS只保存了数组中的最后一个,而没有保存之前的其他数组。但是所有的滑块都有不同的值,从1到5,但是JS只保存了最后一个滑块中的4。这是我的密码:

代码语言:javascript
复制
    //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));

}

结果:

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-02-23 09:09:06

您正在一次又一次地将同一个对象推到数组中。每次在bewertungen块中都需要初始化each

申报

代码语言:javascript
复制
var bewertungen = {};

each块内部

代码语言:javascript
复制
$('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
票数 2
EN

Stack Overflow用户

发布于 2018-02-23 09:19:23

@gurvinder372 372解决方案旁边的另一种可能是缩短函数,这样就不需要声明变量bewertungenidnote

代码语言:javascript
复制
//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));
}
票数 0
EN

Stack Overflow用户

发布于 2018-02-23 09:44:34

这里有一些关于这个东西是如何工作的描述。

代码语言:javascript
复制
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 values
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48944427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档