Javascript localStorage:防止在localStorage中存储重复值的条件
单击li元素时,我只想将其文本作为localStorage值存储一次。如果它存在于localStorage中,则第二次单击必须无效(只是一个警报) 为了检查字符串是否存在,我在for循环中执行if,但我做错了什么。(小提琴第26行)我的问题是,是否有办法使该条件生效。 我不能使用颜色作为键,因为我真正的脚本使用大字符串而不是颜色。添加类不是我想要解决它的方式 谢谢Javascript localStorage:防止在localStorage中存储重复值的条件,javascript,jquery,html,local-storage,Javascript,Jquery,Html,Local Storage,单击li元素时,我只想将其文本作为localStorage值存储一次。如果它存在于localStorage中,则第二次单击必须无效(只是一个警报) 为了检查字符串是否存在,我在for循环中执行if,但我做错了什么。(小提琴第26行)我的问题是,是否有办法使该条件生效。 我不能使用颜色作为键,因为我真正的脚本使用大字符串而不是颜色。添加类不是我想要解决它的方式 谢谢 //每种颜色必须使用localStorage存储一次,只需单击一下即可。 //第二次单击必须无效,只需运行警报。 //第26行:问
//每种颜色必须使用localStorage存储一次,只需单击一下即可。
//第二次单击必须无效,只需运行警报。
//第26行:问题在于检查值是否存在
//在这个例子中使用了颜色,真正的js使用长字符串,这就是为什么我不能使用颜色作为键的原因。
localStorage.clear();
//定义将用于增量的值
if(localStorage.getItem('current_id')==null){
setItem('current_id',0);
}
$(文档)。在('click','li',函数()上{
var dl=$('dl');
var current_color=$(this).text();
//每次单击都会生成一个新密钥
当前_键='color_id_'+(parseInt(localStorage.getItem('current_id'))+1);
setItem('current_id',(parseInt(localStorage.getItem('current_id'))+1));
$(''+当前\u键+''+当前\u颜色+'')。附录(dl);
//问题就在这里
//我想知道如何检查localStorage中是否存在值
//如果此值不存在,则在localStorage中通过单击进行设置
for(var i=0,len=localStorage.length;i
我认为此解决方案可以帮助您:
$(document).on('click', 'li', function() {
var color = $(this).text();
if(!localStorage.getItem("colors")){
localStorage.setItem("colors", "[]");
}
var list = JSON.parse(localStorage.getItem("colors"));
var exist = false;
for(var i = 0; i < list.length; i++)
if(list[i] == color) {
exist = true;
break;
}
if(!exist) list.push(color);
else{
alert("EXIST");
}
localStorage.setItem("colors", JSON.stringify(list));
});
想法是使用名称空间。为什么不使用正在存储的字符串作为localStorage条目的键呢
$(document).on('click', 'li', function() {
var color = $(this).text();
if(!localStorage.getItem("colors")){
localStorage.setItem("colors", "[]");
}
var list = JSON.parse(localStorage.getItem("colors"));
var exist = false;
for(var i = 0; i < list.length; i++)
if(list[i] == color) {
exist = true;
break;
}
if(!exist) list.push(color);
else{
alert("EXIST");
}
localStorage.setItem("colors", JSON.stringify(list));
});
$(document).on('click', 'li', function() {
var color = $(this).text();
var nSpace = "colors." + color;
if(localStorage.getItem(nSpace))
alert("EXIST");
else
localStorage.setItem(nSpace, true);
});