javascript - 将值保存在数组中(并覆盖每次更新)

标签 javascript jquery arrays

我在将值保存为数组时遇到问题。

我有这样的 HTML 代码:

<div id="cn1" class="container cont container4">  
<input id="slider1" type="range" class="slider slider1" min="0" max="5" value="1" step="1">
<input id="slider2" type="range" class="slider slider2" min="0" max="5" value="1" step="1">
<input id="slider3" type="range" class="slider slider3" min="0" max="5" value="1" step="1">
<input id="slider4" type="range" class="slider slider4" min="0" max="5" value="1" step="1">
<input id="slider5" type="range" class="slider slider5" min="0" max="5" value="1" step="1"></div>

5 个容器,里面有 5 个 slider = 25 个 slider 。

需要获取每个 slider 的id和值并另存为

 "sliders":[
               {
                    "slider":"slider1",
                    "value":"1"
               },
               { 
                     "slider":"slider2", 
                     "value":"1"
                }...
       ]

以下是获取每个 slider 值的脚本:

 slider = $('.slider');
 var len = slider.length;

 $(slider).change(function () {
     bt = $(this).attr('id');
      value = $(this).val();

      save = '{"slider":"' + bt + '", "value":"' + value + '"}';
         console.log('save', save);
      })

     .trigger('change');
 }

所以,我在控制台中看到每个 slider 的“保存”。

我需要将每个“保存”写入值数组,然后将此数据保存在 json 文件中并用于其他页面。

我正在努力

function saveValues(){

     var toSave = '"slide10" : {';

     toSave += '"sliders":[';

     for (var i=1;i<len;i++) {
         toSave +=''+save+',';
     }

     toSave+=']';
     return toSave+='}';
}

但它会保存最后一次“保存”25 次的值...:( 就像这样:

"sliders":[
               {
                    "slider":"slider25",
                    "value":"1"
               },
               { 
                     "slider":"slider25", 
                     "value":"1"
                }...
       ]

如何将值保存在数组中(并覆盖相应 slider 值的每次更改)?

最佳答案

你可以这样做:

//get all range type's
var sliders = document.querySelectorAll('[type="range"]');
//prepare array variable
var result = [];
//loop the sliders
for(var i=0, l=sliders.length; i < l; i++){
    var slider = sliders[i];
    //push the object with id and value in the array
    result.push({
        slider: slider.id,
        value: slider.value
    });
}
//display the result :)
console.log(result);

jsfiddle

关于javascript - 将值保存在数组中(并覆盖每次更新),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23870607/

相关文章:

javascript - window.innerWidth 实时

javascript - ember js中push和pushObject的区别

javascript - <select> 的 jQuery .clone() : change the selected option

javascript - 使用闭包传递数组值

Java数组解析

c++ - 保存数组地址的指针地址如何相同?

javascript - 无法加载 instafeed.min.js

jquery - z-index 无法与第 n 个子项正常工作

javascript - window.history.back() 在 Chrome 中不工作,在 Mozilla 中工作

javascript - NextJs TypeError : nextCallback is not a function