使用JavaScript,是否可以将页面上的所有变量保存到本地存储,然后在刷新或重新加载页面时重新加载存储的变量?我正在尝试将变量保存到本地存储并在刷新页面时加载它们。这是我到目前为止所尝试的:
function saveAllVariables(){
//save all variables on the page to local storage
}
function loadAllVariables(){
//load all variables on the page from local storage, and re-create them using their original names
}
loadAllVariables(); //load all variables that were previously stored
if(typeof theName == "undefined"){
var theName = prompt("Please enter your name:","Your name");
}
if(typeof currentTime == "undefined"){
var currentTime = new Date();
}
document.body.innerHTML += "Time last visited: " + currentTime + "<br />";
document.body.innerHTML += "Your name : " + theName + "<br />";
var currentTime = new Date();
答案 0 :(得分:1)
排序。如果您关心的变量都是全局变量,并且不依赖于任何非全局数据,那么您可以查看以下问题:Fetching all (javascript) global variables in a page (感谢Stegrex)
但这不是整个故事。在JS中,许多数据都存在于隐藏的范围中。这有两个问题:
例如:
var globalThing = 'global';
var makeCounter = function() {
var count = 0;
return {
increment: function() { count++; },
getCount: function() { return count; }
}
}
var counter = makeCounter();
counter.increment();
alert(counter.getCount());
现在无法从字面上保存和重构此代码的状态。 count
处于封闭状态,隐藏在全局范围内,无法访问。如果没有更智能的方法来检查和保存对象的内部状态,则无法保留此结构。
所以也许这不是你想采取的方法。我敢打赌,有一种更清洁的方式来做你想做的事。所以问题就变成了:你为什么需要这个?你还想做什么?
我强烈建议您明确保存所需的数据,不要试图强行保存整个Universe。
在您的情况下,这将是简单的:
function saveOnlyImportantVaiables() {
localStorage.theName = theName;
localStorage.currentTime = currentTime;
}