0

我是一个重定向到自身的页面。(带有第二天和前一天的箭头)在 document.ready 页面显示新的一天。

这些日子存储在 localStorage 中,如下所示:

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,如果我让它没有值怎么能我知道我开始的地方吗?

4

3 回答 3

3

您可以使用 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,它会在我写下这句话的那一刻起 7 天内过期,我会这样做

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

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

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

ppkcookie1=testcookie

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

于 2012-07-02T15:59:32.113 回答
1

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

于 2012-07-02T15:58:03.570 回答
1

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

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

例如:

www.example.com/#Day0

将是 Day0 的 URL

www.example.com/#Day1

将是第 1 天的 URL

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

var current_day = window.location.hash;

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

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

var url = "#" + day_to_display;
if (history.pushState)
  history.pushState("", "", url);
else
  window.location = url; 
于 2012-07-02T15:58:26.640 回答