通过 .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
答案 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
。它仅适用于DOM
和input
等select
对象。
您可以为数组执行的操作是检查数组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));
}
});
});