如何在 javascript 中保留变量的值

How to keep a variables's value in javascript

本文关键字:变量 保留 javascript      更新时间:2023-09-26

我是一个重定向到自己的页面。(使用第二天和前一天的箭头)在document.ready上,页面显示新的一天。

这些天存储在本地存储中,如下所示:

for(var i = 0;i<status.length;i++)
  {
      localStorage["Day" + i] = status[i].name;
  }

我希望每次显示的默认日期是"Day0",然后当用户单击下一个或前一天时显示前一天。

    $(document).ready(function () {
           $("#CurrentDay").empty();
           $("#CurrentDay").append(GetCurrentDay());
        });
   function GetCurrentDay() {
   localStorage["CurrentDay"] = localStorage["Day0"];
   return localStorage["CurrentDay"];
}

我让箭头调用这些函数:

  function GoToNextDay() {
    if (i != localStorage["SchoolDays"]+1) {
        i = i + 1;
        localStorage["CurrentDay"] = localStorage["Day" + i];
    }
    else {
        localStorage["CurrentDay"] = localStorage["Day" + 0];
    }
}
 function GoToPrevDay() {
    if (i != 0) {
        i = i - 1;
        localStorage["CurrentDay"] = localStorage["Day" + i];
    }
    else {
    localStorage["CurrentDay"] = localStorage["Day" + localStorage["SelectedDaysNumber"]];
    }
}

我想知道当我在脚本开头用"0"初始化值时,我如何存储值"i"coz,每当调用页面时它都会一直返回到 0,如果我没有值,我怎么知道我从哪里开始?

您可以使用 localStorage 或 globalStorage 来存储数据:

if(typeof localStorage['userName'] === "undefined") {
    // defining the localStorage variable
    localStorage.setItem('userName', 'taranfx');
}
alert("Your user is: " + localStorage.getItem('userName'));

或者,即使在刷新页面后,您也可以使用 cookie 来存储值:

Cookie 可以通过 JavaScript 创建、读取和删除。它们可以通过属性 document.cookie 访问。虽然你可以把document.cookie当作一个字符串,但它不是真的,你只能访问名称-值对。

如果我想用名称-值对"ppkcookie1=testcookie"设置一个cookie,从我写这句话的那一刻起七天后过期,我会这样做

document.cookie =
  'ppkcookie1=testcookie; expires=Thu, 2 Aug 2001 20:47:11 UTC; path=/'
  1. 首先是名称-值对('ppkcookie1=testcookie')
  2. 然后是一个分号和一个空格
  3. 然后以正确的格式显示到期日期('expires=星期四, 2001 年 8 月 2 日 20:47:11 UTC')
  4. 又是一个分号和一个空格
  5. 然后是路径 (路径=/)

这是一个非常严格的语法,不要更改它!

另外,即使看起来我正在将整个字符串写入字符串 document.cookie,但一旦我再次读出它,我只看到名称-值对:

ppkcookie1=testcookie

http://www.quirksmode.org/js/cookies.html

将其存储在 localStorage 中。首次启动脚本时,请检查是否typeof localStorage['your_var'] == "undefined" ,如果true将其设置为 0,如果为 false,则使用该值。

您可以在URL中使用哈希(#)来让您的脚本知道您现在在哪一天,或者您可以将该信息保存在cookie中。

请注意,如果您在URL中使用哈希符号,您实际上可以将链接发送给其他人的特定日期,而在cookie中,它是每个"会话"的基础,这意味着只有该用户的浏览器才会记住当前处于活动状态的日期。

所以例如:

www.example.com/#Day0

将是第 0 天的网址

www.example.com/#Day1

将是第 1 天的网址

然后在您的代码中,您需要执行以下操作:

var current_day = window.location.hash;

并使用该变量来初始化数组。

每当有人点击转到另一天时,只需将历史记录推送到该位置,例如

var url = "#" + day_to_display;
if (history.pushState)
  history.pushState("", "", url);
else
  window.location = url;