以错误的方式反递减
Counter Decrements in a wrong way
我在localStorage中存储了一些数据,我想动态输出这些数据(当单击"之前"answers"之后"箭头时)。我将页面重定向到自身&当文档准备好时,显示当天的名称。
当我单击"下一步"时,天数会正确递增,但当我单击前一步时,天数没有正确递减,我试图处理(如果counter=-1,counter=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吗?听起来您正在重新加载页面,并使用localStorage来跟踪某些值。如果您避免这样做并动态更新"这一天"字段,对您和您的访问者来说会容易得多。例如,假设您在页面中的某个位置有这样的html结构:
<div id="day">0</div>
<span id="next">Next</span>
<span id="previous">Previous</span>
您可以监听点击事件并相应地进行更新。
var day = 0,
dayEl = document.getElementById('day');
document.getElementById('next').onclick = function() {
dayEl.firstChild.nodeValue = ++day;
}
document.getElementById('previous').onclick = function() {
dayEl.firstChild.nodeValue = --day;
}
无需本地存储,也无需重新加载页面。上面的例子是高度简化的,但我希望它能让你明白这一点,并帮助你重新考虑你的方法。
相关文章:
- 如何以编程方式查找javascript语法错误的位置
- 如何检测以跨浏览器方式使用 Javascript 的 DOMParser 时的 XML 解析错误
- 什么's是在Node.js中公开和组合错误的最佳方式
- 以错误的方式反递减
- 以处理错误的方式启动javascript承诺蓝鸟链
- 你能帮我修复杰弗里方式滑块第一次尝试 imgWidth 错误吗?
- 当错误时清除cookie 使用护照反序列化用户.js
- 节点断言错误未打印,断言以静默方式失败
- 以编程方式提交角度表单,但仍会收到 HTML5 验证错误
- 滚动过程中的错误行为,根据代码的链接方式显示
- 以什么方式触发骨干.js错误功能
- jQuery 错误“意外令牌非法”中的反斜杠
- 我正在设置计时器,但我以错误的方式进行.所以请给我更好的方法来做到这一点
- 在Angular中显示表单验证错误的正确方式
- 我的查询获胜'因为一个剧本,它不能工作(它以错误的方式工作)!?但为什么呢?SESSIONS和PHP
- 对零取反会产生错误
- 什么'当从AngularJS中的API响应接收到错误时,触发错误弹出模式的最佳方式
- 未捕获的类型错误:无法读取属性'排序方式'的未定义
- Javascript和此错误.取决于函数的调用方式
- Opencart错误“;SyntaxError:意外的标记<"付款方式结账期间