Javascript 以错误的方式反递减
我在localStorage中存储了一些数据,我希望动态输出这些数据(当单击“之前”和“之后”箭头时)。我将页面重定向到自身,并在文档准备就绪时显示当天的名称 单击“下一步”时,天数正确递增,但单击“上一步”时,天数没有正确递减,我尝试处理(如果计数器=-1,计数器=maxcounter)的情况,但它不起作用。。。 这就是我所尝试的: Javascript:Javascript 以错误的方式反递减,javascript,jquery,jquery-mobile,local-storage,Javascript,Jquery,Jquery Mobile,Local Storage,我在localStorage中存储了一些数据,我希望动态输出这些数据(当单击“之前”和“之后”箭头时)。我将页面重定向到自身,并在文档准备就绪时显示当天的名称 单击“下一步”时,天数正确递增,但单击“上一步”时,天数没有正确递减,我尝试处理(如果计数器=-1,计数器=maxcounter)的情况,但它不起作用。。。 这就是我所尝试的: Javascript: function GetCurrentDay() { if (localStorage["CurrentDay"] == nu
function GetCurrentDay() {
if (localStorage["CurrentDay"] == null || localStorage["CurrentDay"] == 'NaN' || localStorage["CurrentDay"]=="undefined") {
localStorage["Counter"]= 0;
i = localStorage["Counter"];
localStorage["CurrentDay"] = localStorage["Day" + i];
}
return localStorage["CurrentDay"];
}
function GoToNextDay() {
var d = GetCurrentDay();
i = localStorage["Counter"];
i = i*1 + 1;
localStorage["Counter"] = i;
if(i!= localStorage["SchoolDays"]+1){
localStorage["CurrentDay"] = localStorage["Day" + i];
}else{
localStorage["CurrentDay"] = localStorage["Day" + 0];
}
return true;
}
function GoToPrevDay() {
var d = GetCurrentDay();
i = localStorage["Counter"];
i = i*1 - 1;
localStorage["Counter"]=i;
if(i>0){
localStorage["CurrentDay"] = localStorage["Day" + i];
}else{
i=localStorage["SchoolDays"];
localStorage["Counter"]=i;
localStorage["CurrentDay"] = localStorage["Day" + i];
}
return true;
}
你对我如何修理它有什么想法吗 我不太明白为什么需要本地存储来显示和增加一天。如果没有更多关于你期望的行为的信息,就很难给出一个完全知情的答案。首先,正如Bergi在评论中指出的,您正在滥用本地存储 例如,而不是:
function GetCurrentDay() {
if (localStorage["CurrentDay"] == null || localStorage["CurrentDay"] == 'NaN' || localStorage["CurrentDay"]=="undefined") {
localStorage["Counter"]= 0;
i = localStorage["Counter"];
localStorage["CurrentDay"] = localStorage["Day" + i];
}
return localStorage["CurrentDay"];
}
你可以做:
function GetCurrentDay() {
var currentDay = localStorage.CurrentDay;
if (!currentDay) {
var counter = 0;
currentDay = localStorage["Day" + counter];
}
localStorage.Counter = counter;
localStorage.CurrentDay = currentDay;
return currentDay;
}
上述方法要好得多,因为您只在需要获取或设置某些值时访问localStorage。介于两者之间的一切都发生在局部变量上,这将要快得多。此外,在可能的情况下,您应该使用点符号来访问javascript对象。只是可读性强多了
现在,回到基本问题。您确定需要本地存储吗?听起来像是在重新加载页面并使用localStorage跟踪某些值。如果您避免这一点并动态更新“这一天”字段,对您和您的访问者来说会容易得多。例如,假设您在页面的某个地方有这样的html结构:
<div id="day">0</div>
<span id="next">Next</span>
<span id="previous">Previous</span>
无需本地存储,无需重新加载页面。上面的示例非常简单,但我希望它能说明问题,并帮助您重新考虑您的方法。我不太清楚为什么您需要本地存储来显示和增加一天的容量。如果没有更多关于你期望的行为的信息,就很难给出一个完全知情的答案。首先,正如Bergi在评论中指出的,您正在滥用本地存储 例如,而不是:
function GetCurrentDay() {
if (localStorage["CurrentDay"] == null || localStorage["CurrentDay"] == 'NaN' || localStorage["CurrentDay"]=="undefined") {
localStorage["Counter"]= 0;
i = localStorage["Counter"];
localStorage["CurrentDay"] = localStorage["Day" + i];
}
return localStorage["CurrentDay"];
}
你可以做:
function GetCurrentDay() {
var currentDay = localStorage.CurrentDay;
if (!currentDay) {
var counter = 0;
currentDay = localStorage["Day" + counter];
}
localStorage.Counter = counter;
localStorage.CurrentDay = currentDay;
return currentDay;
}
上述方法要好得多,因为您只在需要获取或设置某些值时访问localStorage。介于两者之间的一切都发生在局部变量上,这将要快得多。此外,在可能的情况下,您应该使用点符号来访问javascript对象。只是可读性强多了
现在,回到基本问题。您确定需要本地存储吗?听起来像是在重新加载页面并使用localStorage跟踪某些值。如果您避免这一点并动态更新“这一天”字段,对您和您的访问者来说会容易得多。例如,假设您在页面的某个地方有这样的html结构:
<div id="day">0</div>
<span id="next">Next</span>
<span id="previous">Previous</span>
无需本地存储,无需重新加载页面。上面的例子非常简单,但我希望它能让你明白这一点,并帮助你重新考虑你的方法。你太喜欢分配了,重新分配你评论过的所有内容
CurrentDay
,以CurrentDate
取代它。您确定这就是您想要的吗?不要将所有内容都存储在本地存储中。尤其是在处理数据时,首先加载,然后更改,最后存储—不是一次存储所有内容。@Bergi我必须存储它们,因为我以后会重新使用它们。你有更好的方法吗?使用变量。加载页面时从localStorage加载值,离开时(或更新后)将其存储回。对这些操作使用单独的函数。您太喜欢分配了,需要重新分配您评论过的所有内容CurrentDay
,并将其替换为CurrentDate
。您确定这就是您想要的吗?不要将所有内容都存储在本地存储中。尤其是在处理数据时,首先加载,然后更改,最后存储—不是一次存储所有内容。@Bergi我必须存储它们,因为我以后会重新使用它们。你有更好的方法吗?使用变量。加载页面时从localStorage加载值,离开时(或更新后)将其存储回。对这些操作使用单独的函数。