将localStorage值增加一

时间:2014-11-20 18:17:46

标签: javascript html5

我正在为我们的应用程序尝试登录功能。他们失败了三次,完全把它们踢出去了。为了计算他们尝试了多少次,我想我会使用localStorage,因为我可以很容易地操作它。但是,当他们无法验证自己时,我无法增加值。

在顶部,我正在设置localStorage变量

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

然后如果服务器返回错误,我试图增加该值。

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

显然这不起作用,但是我在研究时可以找到的只是设置并获取localStorage的更新或更改。任何帮助都会很精彩!

5 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:1)

这里有3个问题

  1. 您需要在递增之前将尝试次数转换为数字

  2. 在您的第二套声明中,您没有再次指定密钥

  3. 您正在分配错误代码,而不是检查它是否等于4936


  4. 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);
    }
    

答案 2 :(得分:1)

根据enter image description here setItem的文档,仅接受DomString(UTF-16字符串)。所以答案应该是

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

答案 3 :(得分:1)

您应该被这样使用。它对我有用。

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

答案 4 :(得分:0)

接受的答案并不正确,因为如果 localStorage 中不存在项目 attempts

localStorage.getItem('attempts') // null
parseInt(null) // NaN

打字稿中的正确方式是

 const currentAttempts = parseInt(localStorage.getItem('attempts') ?? '0')
 localStorage.setItem('attempts', (currentAttempts + 1).toString())