我有一个循环,检查当前日期与周从周日-周六,然后检查它是过去,当前或到期。它总是在下周上映!
逻辑如下
如果是当前工作日,则显示今天的日期,如果是上一个工作日,则显示该日期+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加到所有的日期。我错过了什么。似乎盯着这个看了好几天了。
谢谢你的帮助
发布于 2016-05-17 17:10:39
不是一个完整的答案,因为你的代码的每一行都有问题。
使用窗口属性而不是变量声明是可行的,但可能最好使用变量声明而不是属性赋值,因此,而不是:
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!=""){
API非常简单,它只有两个方法,没有"setDate“方法,所以上面的方法总是返回false,因为localStorage.setDate将返回未定义的== 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() > weekdayslocalStorage.getItem('day'))
不管怎么说,这是你们问题的开始。
https://stackoverflow.com/questions/37286762
复制