跨多个页面将项目添加到本地存储
Add items to local storage across multiple pages
有两个文件。第一个:
<div class="someclass">text1</div>
<div class="someclass">text2</div>
<script>
var foo = document.getElementsByClassName("someclass");
var arr = Array.prototype.map.call(foo, function(elem) {
return elem.innerHTML;
});
localStorage.foobar = JSON.stringify(arr);
alert(localStorage.foobar);
</script>
这给出:["text1","text2"]
第二个(除了前两行的内部文本外,文件完全相同):
<div class="someclass">text3</div>
<div class="someclass">text4</div>
<script>
var foo = document.getElementsByClassName("someclass");
var arr = Array.prototype.map.call(foo, function(elem) {
return elem.innerHTML;
});
localStorage.foobar = JSON.stringify(arr);
alert(localStorage.foobar);
</script>
这给出:["text3","text4"]
我希望第二个文件给["text1","text2","text3","text4"]
,或者["text3","text4","text1","text2"]
。
我该怎么做?
所以你需要看看有没有东西,然后把它拼接到数组中。
if (localStorage.foobar) {
var prev = JSON.parse(localStorage.foobar);
arr = arr.concat(prev);
}
localStorage.foobar = JSON.stringify(arr);
您需要检索以前存储的数据(如果有),并将其附加到该数组。类似于:
var foostr = localStorage.foobar || "[]";
arr = JSON.parse(foostr);
var foo = document.getElementsByClassName("someclass");
Array.prototype.forEach.call(foo, function(elem) {
arr.push(elem.innerHTML);
});
localStorage.foobar = JSON.stringify(arr);
alert(localStorage.foobar);
您可以在首先检索 localStorage 的内容后连接两个数组,使用 JSON.parse()
:
var foo = document.getElementsByClassName("someclass");
var arr = Array.prototype.map.call(foo, function(elem) {
return elem.innerHTML;
});
localStorage.foobar = JSON.stringify(JSON.parse(localStorage.foobar).concat(arr));
console.log(localStorage.foobar);
有两个文件。第一个:
<div class="someclass">text1</div>
<div class="someclass">text2</div>
<script>
var foo = document.getElementsByClassName("someclass");
var arr = Array.prototype.map.call(foo, function(elem) {
return elem.innerHTML;
});
localStorage.foobar = JSON.stringify(arr);
alert(localStorage.foobar);
</script>
这给出:["text1","text2"]
第二个(除了前两行的内部文本外,文件完全相同):
<div class="someclass">text3</div>
<div class="someclass">text4</div>
<script>
var foo = document.getElementsByClassName("someclass");
var arr = Array.prototype.map.call(foo, function(elem) {
return elem.innerHTML;
});
localStorage.foobar = JSON.stringify(arr);
alert(localStorage.foobar);
</script>
这给出:["text3","text4"]
我希望第二个文件给["text1","text2","text3","text4"]
,或者["text3","text4","text1","text2"]
。
我该怎么做?
所以你需要看看有没有东西,然后把它拼接到数组中。
if (localStorage.foobar) {
var prev = JSON.parse(localStorage.foobar);
arr = arr.concat(prev);
}
localStorage.foobar = JSON.stringify(arr);
您需要检索以前存储的数据(如果有),并将其附加到该数组。类似于:
var foostr = localStorage.foobar || "[]";
arr = JSON.parse(foostr);
var foo = document.getElementsByClassName("someclass");
Array.prototype.forEach.call(foo, function(elem) {
arr.push(elem.innerHTML);
});
localStorage.foobar = JSON.stringify(arr);
alert(localStorage.foobar);
您可以在首先检索 localStorage 的内容后连接两个数组,使用 JSON.parse()
:
var foo = document.getElementsByClassName("someclass");
var arr = Array.prototype.map.call(foo, function(elem) {
return elem.innerHTML;
});
localStorage.foobar = JSON.stringify(JSON.parse(localStorage.foobar).concat(arr));
console.log(localStorage.foobar);