Jstorager:无法保存我更新的数组

时间:2014-05-27 13:16:50

标签: javascript jquery arrays local-storage jstorage

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


}

1 个答案:

答案 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');
  }
}