我有一个循环,从周日到周六检查当前日期与星期,然后检查它是否过去,当前或到期。它总是在下周出现!
逻辑如下
如果是当前工作日,则显示今天的日期, 如果是过去的工作日,则显示该日期+7以获得下周的日期, 如果是即将到来的那一天,则显示该日期。
这是我放在一起的代码。
document.getElementById('youchose').innerHTML = localStorage.day;
window.myDate = new Date();
if(localStorage.getItem("setDate") != null && localStorage.setDate != null && localStorage.setDate!="0000-00-00" && localStorage.setDate!=""){
a = localStorage.setDate;
a = a.split("-");
if(a.length >= 1){
window.myDate= new Date(a[0],a[1]-1,a[2]);
} else {
window.myDate = new Date();
}
}
var weekdays = new Array();
weekdays['Sunday'] = 0;
weekdays['Monday'] = 1;
weekdays['Tuesday'] = 2;
weekdays['Wednesday'] = 3;
weekdays['Thursday'] = 4;
weekdays['Friday'] = 5;
weekdays['Saturday'] = 6;
//loop starts
for(weeki=0; weeki <= 7; weeki++){
if(window.myDate.getDay() == weekdays[localStorage.day]){ //for current day
SelectFromDB();
window.myDate.setDate(window.myDate.getDate());
weeki = 100;
break;
}else if(window.myDate.getDay() > weekdays[localStorage.day]) { //for previous days
window.myDate.setDate(window.myDate.getDate()-1);
}else{
window.myDate.setDate(window.myDate.getDate()+1); // for next days
}
}
它不会在所有日期中加7。 我错过了什么似乎已经盯着这几天了。
感谢您的帮助
答案 0 :(得分:1)
不是一个完整的答案,因为几乎所有代码都存在问题。
使用 window 属性而不是变量声明有效,但使用变量声明而不是属性赋值可能更好,所以代替:
window.myDate = new Date();
考虑:
var myDate = new Date();
具有微妙但有用的好处。同样,以 window.varName 访问全局变量只是访问 varName 的漫长方式,如果代码要在非浏览器主机中运行,则会出现问题(这似乎不是,但不是一个好习惯。)
然后:
if(localStorage.getItem("setDate") != null && localStorage.setDate != null && localStorage.setDate!="0000-00-00" && localStorage.setDate!=""){
localStorage API非常简单,只有几种方法,没有“setDate”方法所以上面的内容总是会返回false,因为 localStorage.setDate 会返回 undefined = = null。
因此 if 块中的所有代码都不会运行。
还有:
var weekdays = new Array();
weekdays['Sunday'] = 0;
数组只是具有特殊长度属性的对象。上面创建了一个数组,然后将其视为普通对象,相当于:
var weekdays = new Object();
weekdays['Sunday'] = 0;
大多数人会使用对象文字对其进行编码:
var weekdays = {Sunday: 0, Monday: 1, Tuesday: 2, Wednesday: 3,
Thursday: 4, Friday: 5, Saturday: 6};
据推测,本地存储返回的值类似于“2016-05-19”,然后您可以正确解析为日期。
然后:
if (window.myDate.getDay() > weekdays[localStorage.day])
似乎不正确,也许你的意思是:
if(window.myDate.getDay()&gt; weekdays [localStorage.getItem('day')])
无论如何,这是你问题的一个开始。