0

我编写了 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');
    }


}
4

1 回答 1

0

解决方案

刷新时删除所有数据......所以不要这样做!您还有一个未声明的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');
  }
}
于 2014-05-27T14:35:52.350 回答