2014-09-16 3 views
0

Работы по .click сохранить в LocalStorage:OnChange создать автосохранения функции (JavaScript) не работает

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

Может ли кто-нибудь посоветовать, как это решить, если я хочу, чтобы Array автосохраняется при изменении? Спасибо.

Оригинальная ссылка: https://github.com/erictsaiweb/card-parking/blob/master/cardpark.js

+0

Допустимо для использования, например, AngularJS? или вы ограничены простой JS? – Lugaru

+0

Спасибо Lugaru. Я могу использовать все виды фреймворков, если это помогает. –

+0

В этом случае используйте AngularJS, и вы можете использовать такой штат, как $ watch или ngChange, для динамического мониторинга изменений без дополнительного кода. – Lugaru

ответ

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));  
} 
+0

Андреас, спасибо! Вы имеете в виду: changeParkArray ([new ck1, newck2, newck3, newck4, newck5] = function (data) { localStorage.removeItem ("saveArray"); localStorage.setItem ("saveArray", JSON.stringify (data)) ; }); –

+0

нет, вы вызываете функцию с двумя параметрами. Один для нового значения и одна функция, которую вы хотите запустить при изменении значения. –

+0

получил вашу оценку. Проверить новое значение, если оно изменилось, правильно? Спасибо! –

0

Вы не можете использовать функцию onclick на объект JQuery, как он предназначен для объекта JavaScript (например document.getElementById('element').onclick....) оно должно быть .click или .on('click').

И вы не нацеливание вашего элемента правильно, check ... Является ли это class или id ...

И onchange не существует в прототипе массива. Он предназначен только для DOM объекта, такого как input и select.

Что вы можете сделать для массива, это проверить, является ли массив 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)); 
    } 
    }); 
}); 
+0

Xlander, спасибо за отзыв. Позвольте мне поработать над этим! –

+0

Добро пожаловать. – Xlander

Смежные вопросы