2017-07-18 52 views
1

我使用localForage離線存儲數據。當用setItem方法添加存儲鍵值時,我想要生成如activity_1,activity_2,activity_3等鍵的值,並且這是在我提交表單時生成的。因此,對於我提交的每個表單,它都應以不同的方式生成關鍵值。在localforage中動態生成密鑰的值

下面是該代碼:

var getActivity = document.getElementById('getActivity'), 
    fetchVal = document.getElementById('fetchVal'), 
    log_form = document.getElementById('log_form'); 

function activityArr() { 
    var i = 1; 
    if(i > 0){ 
    var keyVal = 'activity_' + i; 
    } 
    i++; 
    return keyVal; 
} 

log_form.addEventListener('submit', function(e){ 
    e.preventDefault(); 
    localforage.setItem(activityArr(), getActivity.value) 
    .then(function (val) { 
     console.log(val); 
    }).catch(function(err){ 
     console.log(err); 
    }); 
    localforage.keys().then(function(keys) { 
    console.log(keys); 
}).catch(function(err) { 
    console.log(err); 
}); 
}); 

這裏的codepen鏈接以供參考。

但在我的情況下,它會爲我提交的每個表單生成關鍵'activity_1'。因此,它會覆蓋存儲在「activity_1」中的以前的值。

只需嘗試提交表單2-3次,然後打開開發人員控制檯查看結果。

如何在每次提交表單時生成不同的密鑰。

回答

0

不要讓我變量本地。每次調用該函數時,i變量被重置爲1.

var i = 1; 
function activityArr() { 
    if(i > 0){ 
    var keyVal = 'activity_' + i; 
    } 
    i++; 
    return keyVal; 
} 
+0

ahh ...我的錯誤。感謝您的建議。 – YogY