我正在为我们的应用程序尝试登录功能。他们失败了三次,完全把它们踢出去了。为了计算他们尝试了多少次,我想我会使用localStorage,因为我可以很容易地操作它。但是,当他们无法验证自己时,我无法增加值。
在顶部,我正在设置localStorage变量
localStorage.setItem("attempts", "0")
然后如果服务器返回错误,我试图增加该值。
if(errorCode === 4936){
var attempts = localStorage.getItem("attempts");
localStorage.setItem(attempts++);
console.log(attempts);
}
显然这不起作用,但是我在研究时可以找到的只是设置并获取localStorage的更新或更改。任何帮助都会很精彩!
答案 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个问题
您需要在递增之前将尝试次数转换为数字
在您的第二套声明中,您没有再次指定密钥
您正在分配错误代码,而不是检查它是否等于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);
}
答案 2 :(得分:1)
根据 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())