Javascript sessionStorage if值已存在
发现使用sessionStorage显示最近查看的产品的非常好的脚本。只有一个问题:每个产品都可以存储并多次显示 这是JSFIDLE 应该还有一个IF来检查当前产品是否已经在存储中,如下所示:Javascript sessionStorage if值已存在,javascript,html,local-storage,session-storage,Javascript,Html,Local Storage,Session Storage,发现使用sessionStorage显示最近查看的产品的非常好的脚本。只有一个问题:每个产品都可以存储并多次显示 这是JSFIDLE 应该还有一个IF来检查当前产品是否已经在存储中,如下所示: // check if product already in storage if(!productExistsInStorage()) { var currentCount = parseInt(sessionStorage.getItem("storedCount")); // a
// check if product already in storage
if(!productExistsInStorage()) {
var currentCount = parseInt(sessionStorage.getItem("storedCount"));
// add to storage
sessionStorage.setItem(currentCount.toString(), JSON.stringify(productInfo()));
// update storedCount var by one
sessionStorage.setItem("storedCount", (currentCount + 1).toString());
}
我试着去,但没有成功
任何提示如果产品数据已经在sessionStorage中设置,如何不保存它?为什么不检查该项目的会话存储是否为空
if(sessionStorage.getItem("storedCount") === null)
{
//do something
}
最好创建一个函数,您可以将项目名称传递给它进行检查
function doesStorageExist(item)
{
if(sessionStorage.getItem(""+item) === null)
{
//do something
}
}
我不会在
sessionStorage
中为每个产品设置单独的项,而是将它们全部设置在一个数组中。这样可以更容易地检查它是否已经存在:
var currentItems = JSON.parse(sessionStorage.getItem('products'));
var currentProduct = productInfo();
if (currentItems.filter(function(p){return p.productURL == currentProduct.productURL}).length == 0) {
// add
}
我自己查过后才发现这篇文章
if ("value" in sessionStorage) {
alert("yes");
}
else {
alert("no");
}
因为OP关心项目的内容。ID不断增加。这个问题毫无意义。您正在尝试在会话存储中增加计数变量吗?!按照我对这个问题的理解,用户可以将项目添加到他们的存储中。每次,它都会被赋予一个新的ID,即使实际的项目已经存在。因此,需要检查内容,而不仅仅是数字。好的,请检查内容是否存在。。。在项目IDRight中保留一个计数,这更像我的答案。您的没有。错误日志“sessionStorage.get不是函数”输入错误。应该是
getItem
好的,谢谢,但我不可能按照您的建议重写代码(将产品数据保存到数组)。我太笨了,不能这样做:/