我写了3个小函数,用于保存,加载或删除使用jstorage保存的数组中的单个条目。
两个第一个功能完美无缺。
但删除单个条目的系统删除整个数组或不保存它。
有人能指出我的问题,这可能在我的代码中吗?
function local_single_delete(poi_id){
if ($.jStorage.storageAvailable()== true) { // if local storage is available
loctab = $.jStorage.get("poi_ids"); // load saved data
if (loctab == null) { // if no saved data => null array
loctab = new Array();
console.log('loctab is null');
}
for (local_i = 0; i < loctab.length; local_i++ ){ // for each saved data , looking for one one in particular
if (loctab[local_i]['id_poi'] === poi_id) { // if found
loctab[local_i]= loctab[loctab.length-1]; // the one becomes the last entry value,
loctab.length =loctab.length -1; // then we truncate the array for one position
break; // and we leave the for
}
}
$.jStorage.set("poi_ids",loctab); // write data
$.jStorage.flush(); // clear cache
}
else {
console.log('on a pas de stockage local');
}
}
答案 0 :(得分:0)
<强> Solution 强>
您在刷新时删除所有数据......所以不要这样做!您还有一个未声明的i
变量。
function local_single_delete(poi_id){
if ($.jStorage.storageAvailable() === true) {
loctab = $.jStorage.get("poi_ids");
if (loctab === null) {
loctab = [];
console.log('loctab is null');
}
for (local_i = 0; local_i < loctab.length; local_i++ ){
if (loctab[local_i].id_poi === poi_id) {
loctab[local_i]= loctab[loctab.length-1];
loctab.length =loctab.length - 1;
break;
}
}
$.jStorage.set("poi_ids",loctab);
}
else {
console.log('on a pas de stockage local');
}
}