2014-11-20 89 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