希望标题有点清楚......不知道如何更具体。
这是我的问题:
我有几个不同的变量应该从一个Html页面传递到localstorage。
在一个(多个)页面中,我可以(使用clickevents)更改值,这些值应该在之后保存并在下一页上加载。如果除了起始值“0”之外没有其他值,则应保存值0,因此var不会被定义。
从技术上讲,localstorage正在使用函数中的以下代码:document.addEventListener('DOMContentLoaded', function():
var XXX;
if (localStorage.XXX> 0){
XXX= Number(localStorage.XXX);
} else {
XXX = 0;
}
document.getElementById("XXX").innerText = XXX;
这整个代码很可能不是你见过的最漂亮的东西,但它正在发挥作用。由于我有几个变量越来越多,我认为将每个变量的所有复制/粘贴代码都放入函数中会很好...我尝试了很多东西,但没有任何工作,我甚至都没有它在ctrl + Shift + I的帮助下......这就是我的尝试:
var resource = ["XXX", "YYY", "ZZZ"];
var localStorageResource = [localStorage.XXX, localStorage.YYY, localStorage.ZZZ];
function getLocalStorage() {
for (var i = 0; i < resource.length; i++){
if (localStorageResource[i] > 0){
resource[i] = Number(localStorageResource[i]);
} else {
resource[i] = 0;
}
document.getElementById("resource[i]").innerText = resource[i];
正如您所看到的,代码并没有真正不同,我只是将变量及其各自的localstorage值放入两个不同的数组中。 我无法理解为什么变量XXX会被实际值覆盖,而不是被分配给变量的值...这在“非灵活”解决方案中正常工作。
只是为了给你背景: 这一切都是关于在一个页面或另一个页面上收集资源(不同位置上的不同资源),并在其他html页面上将所有这些信息带到这些资源上做些什么...... 现在我使用vanilla Javascript除了easelJS以外的一些画布东西
我非常感谢你的建议,并希望从你的答案中学到很多东西。
提前致谢!
答案 0 :(得分:0)
最好尝试使用对象并迭代键(作为示例的变量名称)
var resource = {"XXX": 0, "YYY": 0, "ZZZ": 0};
function getLocalStorage() {
for (var i in resource){ //Variable "i" will be "XXX", "YYY" and "ZZZ" strings in each iteration
resource[i] = localStorage.getItem(i) || 0; //In the first iteration will assign localStorage.getItem("XXX") to resource.XXX, and so on...
document.getElementById(i).innerText = resource[i]; //In the first iteration will get element by id="XXX" and assign the value of resource.XXX, and so on...
}
}