onchange创建自动保存功能(javascript)没有用

时间:2014-09-16 07:17:09

标签: javascript arrays onchange autosave

通过 .click 工作以保存到localStorage:

    $("check").onclick = function(){
    parkArray = [check1,check2,check3,check4,check5];
    localStorage.removeItem ("saveArray");     
    localStorage.setItem("saveArray",JSON.stringify(parkArray));

未通过 onchange 工作以自动保存到localstorage

    parkArray = [check1,check2,check3,check4,check5];
    parkArray.onchange = function () {
    localStorage.removeItem ("saveArray");     
    localStorage.setItem("saveArray",JSON.stringify(parkArray));

如果我想在更改时自动保存数组,是否有人可以建议如何解决这个问题? 谢谢。

原始链接:https://github.com/erictsaiweb/card-parking/blob/master/cardpark.js

2 个答案:

答案 0 :(得分:0)

您必须使用回调函数。

// initalize
var parkArray = [check1,check2,check3,check4,check5];

// change
changeParkArray([check4,check5,check6,check7,check8], onChangeParkArray);

// change ahain
changeParkArray([check9,check10,check12,check21,check100], onChangeParkArray);


// the function who changes the array
function changeParkArray(newValue, callback){
    parkArray = newValue;
    callback(newValue);
}

// function to run after ParkArray is changed
function onChangeParkArray(data){
    localStorage.removeItem ("saveArray");     
    localStorage.setItem("saveArray",JSON.stringify(data));    
}

答案 1 :(得分:0)

您不能在jQuery对象上使用函数onclick,因为它适用于JavaScript对象(例如document.getElementById('element').onclick....),它应该是.click.on('click')

并且您没有正确定位您的元素,check ...是class还是id ......

数组原型中不存在onchange。它仅适用于DOMinputselect对象。

您可以为数组执行的操作是检查数组parkArray是否与localStorage中的数组相同。

e.g

$("#check").click(function(){
  var saveArray = (localStorage.saveArray != undefined) ? JSON.parse(localStorage.saveArray) : [];
  parkArray = [check1,check2,check3,check4,check5];

  saveArray.forEach(function(v, i){
    if(parkArray.indexOf(v) < 0){
      localStorage.removeItem ("saveArray");     
      localStorage.setItem("saveArray",JSON.stringify(parkArray));
    }
  });
});