我试图在单击元素时将元素ID放入数组中,并将此数组存储在本地存储中。然后调用此数组,并在每次单击元素时推送更多元素ID。对我来说,这比我想象的要复杂得多。
我正在使用javascript / jquery。
我的代码:
var reportArray = []
var storedArray = JSON.parse(localStorage.getItem("reportarray"));
if(storedArray == '') {
reportArray.push("foo");
localStorage.setItem("reportarray", JSON.stringify(reportArray));
} else {
reportArray.push(storedArray);
localStorage.setItem("reportarray", JSON.stringify(storedArray));
}
我意识到这段代码可能已经过时了(它甚至无法正常工作),但我至少试一试。请帮忙吗?
答案 0 :(得分:2)
它看起来并不遥远。我看到的主要问题是,在else子句中,如果storedArray已经存在,那么你就不要将任何新元素推送到它。在尝试解析之前检查reportarray为null也可能更安全。
答案 1 :(得分:1)
API:
function storeId(id) {
var ids = JSON.parse(localStorage.getItem('reportArray')) || [];
if (ids.indexOf(id) === -1) {
ids.push(id);
localStorage.setItem('reportArray', JSON.stringify(ids));
}
return id;
}
该函数使用ID存储在本地存储中。如果本地存储项尚不存在,则会创建一个全新的阵列,否则将使用本地存储中的阵列。此外,确保在将其推送到存储时id尚不存在。
用法:
$(function () {
$('.btn').click(function () {
var id = $(this).attr('id');
storeId(id);
});
});
<强> EXAMPLE 强>
答案 2 :(得分:0)
如果您需要在本地存储中放置ID,则可能是策略:
var reportArray = localStorage.getItem("reportarray");
if(reportArray != null && reportArray != '') {
var storedArray = JSON.parse(reportArray);
storedArray.push("foo");
localStorage.setItem("reportarray", JSON.stringify(storedArray));
} else {
var storedArray = ["foo"];
localStorage.setItem("reportarray", JSON.stringify(storedArray));
}
显然,您需要输入ID而不是"foo"
。
答案 3 :(得分:0)
我会这样说:
HTML:
<button id="elt1">Elt 1</button>
<button id="elt2">Elt 2</button>
<button id="elt3">Elt 3</button>
<button id="elt4">Elt 4</button>
<button id="elt5">Elt 5</button>
JS:
$(document).ready(function(){
$('button').click(function(){
var id = this.id;
var reportArray = JSON.parse(localStorage.getItem("reportarray")) || [];
if (!~reportArray.indexOf(id)) reportArray.push(this.id);
localStorage.setItem("reportarray", JSON.stringify(reportArray));
});
});
JS(即使已经存在,也推送id):
$(document).ready(function(){
$('button').click(function(){
var id = this.id;
var reportArray = JSON.parse(localStorage.getItem("reportarray")) || [];
reportArray.push(this.id);
localStorage.setItem("reportarray", JSON.stringify(reportArray));
});
});