javascript - 如何创建一个跨页面存储多个值的 cookie 按钮
问题描述
我使用以下代码在每次单击同一个按钮时设置一个 cookie,每次单击该按钮时都会增加一个数字值并将产品的标题保存为值(例如名称:1,值:汽车) :
var num=1;
function addCookie() {
var expString = "; expires=" + date.toGMTString();
var cookievalue=escape(document.querySelector("[name=addpart]").value) + ";";
document.cookie=num + "=" + cookievalue + expString + "; path=/";
num++;
}
它在我的页面上运行良好,每次点击它时都会设置一个新的 cookie 名称,然后是 '1',然后是 '2',然后是 '3' 等等,但显然这只会让我:
- 名称:1 值:汽车
- 名称:2 值:汽车
- 名称:3 值:汽车
但是,当我转到另一个页面并再次单击该按钮时,它会覆盖名称为 1 的 cookie 并再次启动该过程。
我想知道如何跨页面继续此按钮的名称计数?这样用户就可以浏览产品并单击按钮,该按钮实质上会生成一个稍后可以调用的列表:
- 名称:1 值:汽车
- 名称:2 值:自行车
- 名称:3 值:火车
我知道为每个页面创建新按钮会更容易,但我在我的网站上使用模板系统,我们有成千上万的产品页面,所以这对我来说不是一个可行的选择。
解决方案
存储对象数组非常容易,我认为使用 localStorage 而不是 cookie 更好。
//example of first structure
localStorage.setItem("visits", JSON.stringify({"1":[],"2":[],"3":[]}));
//getting the item
var visits = JSON.parse(localStorage.getItem("visits"));
//different visits
visits["1"].push("Car");
visits["1"].push("Bike");
visits["1"].push("Something");
visits["2"].push("Bike");
visits["2"].push("Bike");
visits["2"].push("Something");
visits["3"].push("Something");
visits["3"].push("Something");
visits["3"].push("Something");
//setting the item
localStorage.setItem("visits", JSON.stringify(visits));
console.log(visits)
推荐阅读
- r - igraph max_bipartite_match 函数的匹配输出错误?
- dart - java.lang.IllegalStateException: 回复已提交是否有解决方案
- oracle-sqldeveloper - 从 SQL Developer 连接到 XEPDB1
- javascript - forEach 循环返回未定义的值
- php - 如何在此代码中使用 Session。无法理解
- angular - ngxs 有选择地序列化数组中的属性
- c# - 无法设置所选值
- javascript - 我可以在javascript中触发点击window.printer页面吗?
- android - setOnCreatePreferencesChangeListener 类型不匹配
- html - 请告诉我为什么 highlight.js 不起作用