onchange to create autosave function(javascript)did'不起作用

onchange to create autosave function (javascript) didn't work

本文关键字:did 不起作用 javascript create to autosave function onchange      更新时间:2023-09-26

工作。单击保存到本地存储:

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

更改以自动保存到本地存储时,不起作用

    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

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

而且你没有正确定位你的元素,check。。。是class还是id。。。

并且onchange在阵列原型中不存在。它只适用于像inputselect这样的DOM对象。

您可以为数组做的是检查数组parkArray是否与localStorage中的数组相同。

例如

$("#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));
    }
  });
});

您必须使用回调函数。

// 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));    
}