Javascript localStorage:防止在localStorage中存储重复值的条件

Javascript localStorage:防止在localStorage中存储重复值的条件,javascript,jquery,html,local-storage,Javascript,Jquery,Html,Local Storage,单击li元素时,我只想将其文本作为localStorage值存储一次。如果它存在于localStorage中,则第二次单击必须无效(只是一个警报) 为了检查字符串是否存在,我在for循环中执行if,但我做错了什么。(小提琴第26行)我的问题是,是否有办法使该条件生效。 我不能使用颜色作为键,因为我真正的脚本使用大字符串而不是颜色。添加类不是我想要解决它的方式 谢谢 //每种颜色必须使用localStorage存储一次,只需单击一下即可。 //第二次单击必须无效,只需运行警报。 //第26行:问

单击li元素时,我只想将其文本作为localStorage值存储一次。如果它存在于localStorage中,则第二次单击必须无效(只是一个警报)

为了检查字符串是否存在,我在for循环中执行if,但我做错了什么。(小提琴第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);
});