页面重新加载后在javascript中保存变量

时间:2014-03-08 10:05:49

标签: javascript jquery

我无法使其工作并在页面刷新时保存变量。

这里是我正在使用的。

window.onload = function () {

   if (localStorage.getItem("forg") === null) {
       localStorage.getItem("forg2");
      } else {
           localStorage.getItem("forg");
             }
      }

function forgot() {

    $('#pass_icon').removeClass("pass-icon");
    $('#forgot').replaceWith('<input class="login_register" id="forgot2" type="button" value="' + login + '" />');

}

function forgot2() {

    $('#pass_icon').addClass("pass-icon");
    $('#logintitle').html('<h1>' + login_form + '</h1>');
}

$(document).on('click', '#forgot', function () {
    forgot();
    localStorage.removeItem("forg2");
    localStorage.setItem("forg", forgot());
});
$(document).on('click', '#forgot2', function () {
    forgot2();
    localStorage.removeItem("forg");
    localStorage.setItem("forg2", forgot2());
});

此代码无法保存,并且页面重新加载时默认情况下会获得function forgot()

我想要的是当我点击#forgot2然后当页面刷新时,它将保持此功能forgot2()

我不知道我在这里做错了什么。

我有最新版本的firefox(27)。

1 个答案:

答案 0 :(得分:2)

这两行代码看起来像你的问题:

localStorage.setItem("forg", forgot());

localStorage.setItem("forg2", forgot2());

我不知道你要做什么,这两行代码正在做的是立即调用这两个函数,然后尝试将这些函数的返回结果放入localStorage。由于这两个函数都没有返回值,因此您尝试将undefined放入localStorage。显然,除了擦除以前在LocalStorage中为该项目所做的事情之外,这将无法完成任何有用的事情。

如果你想要做的是在localStorage中放置一个函数,那么你无法做到。 localStorage接受字符串。您需要在那里存储一个字符串,然后您可以在将来检查该字符串,并根据您在localStorage中找到的字符串更改您的逻辑。

因此,例如,您可以在localStorage中存储两个字符串中的一个:"forgot""forgot2"。然后,当您从localStorage检索项目时,可以使用if语句检查以查看找到的字符串,然后根据if语句的结果执行不同的代码。首先,您可能只需要localStorage中的一个键,并且可以为该单个键使用不同的值。以下是您如何阅读它的想法:

var storageVal = localStorage.getItem("forg");
if (storageVal) {
    if (storageVal === "forget") {

       // code here for the "forget" state

    } else if storageVal === "forget2" {

        // code here for the "forget2" state

    }
}


$(document).on('click', '#forgot', function () {
    forgot();
    localStorage.setItem("forg", "forget");
});
$(document).on('click', '#forgot2', function () {
    forgot2();
    localStorage.setItem("forg", "forget2");
});