2016-05-17 4 views
0

Ich habe eine Schleife, die das aktuelle Datum für die Woche von Sonntag bis Samstag überprüft und dann überprüfen, ob es vorbei, aktuell oder fällig ist. Es zeigt nächste Woche immer! kommen istJavaScript Schleife durch Daten - stoppen und korrekte Datum anzeigen

Logik ist als

folgt Wenn der aktuelle Wochentag ist heute Datum dann angezeigt werden, wenn es dann ein vergangenes Wochentag ist dieses Datum anzuzeigen + 7 zum nächsten Woche Datum zu erhalten, wenn es ein Tag Zeigen Sie dann dieses Datum an.

Hier ist der Code, den ich zusammengestellt habe.

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 
    } 
} 

Es wird nicht hält nur 7 zu allen Terminen hinzufügen. was fehlt mir. seit Tagen starrte es an.

Vielen Dank für jede Hilfe

+0

Da dies keine direkte Antwort auf Ihre Frage ist, werde ich es hier setzen. Wenn Sie mit Daten viel in Javascript arbeiten, dann würde ich auf http://momentjs.com/ – Luke3butler

+0

schauen Danke Luke, ich werde das untersuchen. Ich stelle mir vor, den Moment zu benutzen.min und moment.max würde es einfacher machen? – Diggetydog

+0

Um ehrlich zu sein, bin ich etwas verwirrt darüber, was du erreichen willst. Wenn Sie versuchen, ein Fälligkeitsdatum für eine Deadline zu erhalten (um zu sehen, ob es überfällig oder fällig ist oder wie lange es noch dauert), könnten Sie 'moment (dateobject) .isBefore (dateobject)' und/oder 'verwenden moment (dateobject) .isAfter (dateobject) 'und dann' .from (date) 'und' .to (date) ' – Luke3butler

Antwort

1

keine vollständige Antwort, da es Probleme mit fast jeder Zeile des Codes.

Die Verwendung von Fenstern Eigenschaften anstelle von Variablendeklarationen funktioniert, aber es ist wahrscheinlich besser Variablendeklarationen eher Zuweisungen als Eigenschaft zu verwenden, so statt:

window.myDate = new Date(); 

betrachten:

var myDate = new Date(); 

, die subtile aber nützliche Vorteile hat. Ebenso ist der Zugriff auf globale Variablen wie window.varName nur eine langatmige Art des Zugriffs auf varName und ist problematisch, wenn der Code in einem Nicht-Browser-Host ausgeführt werden soll (was dies nicht zu sein scheint, aber keine gute Angewohnheit).

Dann:

if(localStorage.getItem("setDate") != null && localStorage.setDate != null && localStorage.setDate!="0000-00-00" && localStorage.setDate!=""){ 

Die localStorage API sehr einfach ist, ist es nur ein paar Methoden hat, gibt es keine „setDate“ -Methode so die oben immer false zurück, da localStorage.setDatezurück undefiniert which == null.

Also keiner der Code in wenn Block wird ausgeführt.

Auch gibt es:

var weekdays = new Array(); 
weekdays['Sunday'] = 0; 

Arrays sind nur mit einer speziellen Eigenschaft length-Objekte. Die oben ein Array erzeugt, dann behandelt es als einfaches Objekt und ist äquivalent zu:

var weekdays = new Object(); 
weekdays['Sunday'] = 0; 

meisten es würde codieren ein Objekt unter Verwendung literal:

var weekdays = {Sunday: 0, Monday: 1, Tuesday: 2, Wednesday: 3, 
       Thursday: 4, Friday: 5, Saturday: 6}; 

Vermutlich wird der Wert aus dem lokalen Speicher zurückgegeben wird, ist etwas, wie '2016-05-19', die Sie dann korrekt zu einem Datum analysieren.

Dann:

if (window.myDate.getDay() > weekdays[localStorage.day]) 

Hat nicht korrekt erscheinen, vielleicht meinte Sie:

if (window.myDate.getDay()> Wochentage [localStorage.getItem ('Tag')])

Wie auch immer, das ist ein Anfang für Ihre Probleme.

+0

Vielen Dank Rob, ich habe diesen Code geerbt und versuche, einen Sinn daraus zu machen. Du hast wirklich geholfen. Danke noch einmal. – Diggetydog

+0

Es gab Probleme mit jeder Zeile. Ich bin froh, dass Sie das erwähnt haben, weil ich in der Lage war, die Situation mit dem Kunden zu entlasten, indem ich Ihnen Ihren Kommentar schickte. Prost! – Diggetydog

Verwandte Themen