Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以错误的方式反递减_Javascript_Jquery_Jquery Mobile_Local Storage - Fatal编程技术网

Javascript 以错误的方式反递减

Javascript 以错误的方式反递减,javascript,jquery,jquery-mobile,local-storage,Javascript,Jquery,Jquery Mobile,Local Storage,我在localStorage中存储了一些数据,我希望动态输出这些数据(当单击“之前”和“之后”箭头时)。我将页面重定向到自身,并在文档准备就绪时显示当天的名称 单击“下一步”时,天数正确递增,但单击“上一步”时,天数没有正确递减,我尝试处理(如果计数器=-1,计数器=maxcounter)的情况,但它不起作用。。。 这就是我所尝试的: Javascript: function GetCurrentDay() { if (localStorage["CurrentDay"] == nu

我在localStorage中存储了一些数据,我希望动态输出这些数据(当单击“之前”和“之后”箭头时)。我将页面重定向到自身,并在文档准备就绪时显示当天的名称

单击“下一步”时,天数正确递增,但单击“上一步”时,天数没有正确递减,我尝试处理(如果计数器=-1,计数器=maxcounter)的情况,但它不起作用。。。 这就是我所尝试的:

Javascript:

 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加载值,离开时(或更新后)将其存储回。对这些操作使用单独的函数。