2014-11-20 90 views
1

我正在嘗試登錄功能到我們的應用程序。他們失敗了三次,完全踢出了他們。爲了不斷計算他們嘗試了多少次,我認爲我會使用localStorage,因爲我可以輕鬆操縱它。但是,當他們未能對自己進行身份驗證時,我無法遞增價值。將localStorage值遞增1

在頂部,如果服務器返回我想incrament該值的錯誤,我設置localStorage的變量

localStorage.setItem("attempts", "0") 

,然後。

if(errorCode = 4936){ 
    var attempts = localStorage.getItem("attempts"); 
    localStorage.setItem(attempts++); 
    console.log(attempts); 
} 

,顯然這是行不通的,但所有我能找到我的研究是設置和獲取localStorage的一無所知更新或修改。任何幫助將是美好的!

回答

4

您正在嘗試增加一個字符串,並嘗試setItem而未提供密鑰名稱。這是行不通的。

localStorage.setItem('attempts',parseInt(localStorage.getItem('attempts'))+1); 

你的情況下固定:

if (errorCode == 4936) { 
    var attempts = parseInt(localStorage.getItem("attempts")); 
    localStorage.setItem("attempts", attempts++); 
    console.log(attempts); 
} 
+0

我receaving錯誤未捕獲的ReferenceError不檢查:無效的左側表達後綴操作時我把它放進去。 – zazvorniki 2014-11-20 18:28:23

+1

已編輯。你不能「++」那些不是變量的東西。我忽略了它 – Brennan 2014-11-20 18:31:04

1

這裏有三個問題

  1. 你需要增加

  2. 在之前嘗試了許多的數字轉換的第二組聲明你沒有再次指定一個鍵

  3. 您分配了錯誤代碼,如果它等於4936


localStorage.setItem("attempts", "0"); 

if(errorCode == 4936){ // double equal is need to compare. Single equals is an assignment operator 
    var attempts = Number(localStorage.getItem("attempts")); 
    localStorage.setItem("attempts", ++attempts); 
    console.log(attempts); 
} 
+0

是的,當我從0引號脫離引號時,它會大聲吼我,因爲localStorage只會採用字符串。這似乎只有一次,但當它通過該功能回來,它只是停留在「1」 – zazvorniki 2014-11-20 18:26:22

+0

你是絕對正確的。我只是試了一下,數字在存儲時自動轉換爲字符串。更新我的回答,以反映 – 2014-11-20 18:30:03

+0

哦,我真的有一個更大的跡象在我複製並粘貼時它一定被刪除。它似乎仍然不能增加數字,而不是第一次增加數字。一旦達到一個,它就停留在一個。 – zazvorniki 2014-11-20 18:34:09