2017-01-22 3 views
0

Ich habe 3 Variablen, die ich tests mache, ich bin neu in Javascript, und ich arbeite an der Umwandlung der if/else-Anweisungen zu einem Schalter für besseren Code . Aber ich brauche eine Anleitung, wie ich das machen kann, da ich 3 var Tag, Monat, Jahr habe. Jede Hilfe würde sehr geschätzt werden. if ((Tag! = '' || Monat! = '' || Jahr! = '')) {Wenn ich sonst in Javascript auf mehreren Bedingungen wechseln kann

if(day!='' && month =='' && year ==''){ 
     var day = d.setDate(d.getDate()+ parseInt(day)); 
    }else if(day!='' && month!='' && year ==''){ 
     var month =d.setDate(d.getMonth()+1+ parseInt(month)); 
     var day = d.setDate(d.getDate()+ parseInt(day)); 
    }else if(day!='' && month!='' && year!=''){ 
     var year =d.setDate(d.getFullYear()+ parseInt(year)); 
     var month =d.setDate(d.getMonth()+1+ parseInt(month)); 
     var day = d.setDate(d.getDate()+ parseInt(day)); 
    }else if(day!='' && year!='' && month ==''){ 
     var year =d.setDate(d.getFullYear()+ parseInt(year)); 
     var day = d.setDate(d.getDate()+ parseInt(day)); 
    }else if(month!='' && year!='' && day ==''){ 
     var year =d.setDate(d.getFullYear()+ parseInt(year)); 
     var month =d.setDate(d.getMonth()+1+ parseInt(month)); 
    }else if(month!='' && day =='' && year ==''){ 
     var month =d.setDate(d.getMonth()+1+ parseInt(month)); 
    }else if(year!='' && day =='' && month ==''){ 
     var year =d.setDate(d.getFullYear()+ parseInt(year)); 
    } 

} 
+0

Mögliche Duplikat [Switch-Anweisung mehrere Fälle, in JavaScript] (http://stackoverflow.com/questions/13207927/switch-statement-multiple- cases-in-javascript) –

+0

Sie werden niemals die zweite Bedingung eingeben. Wenn Tag und Monat nicht '' sind, dann bist du immer noch in der ersten gefangen, wenn der Tag nicht '' ist. – gautam1168

+0

Sie sollten besser nicht Parseint wiederholen, verwenden Sie es einmal. –

Antwort

0

Einige Fragen und Anmerkungen:

  • Sie sollten die Änderungen separat behandeln, da Sie beim Testen jeder Kombination nichts gewinnen. Der Effekt der Anpassung von Jahr, Monat und Tag kann unabhängig angewendet werden.

  • Sie rufen die falsche Methode zur Einstellung des Monats und/oder Jahr

  • Diese Methoden einen Zeitstempel zurückgeben, so sollten Sie das Ergebnis zu Ihrem Jahr, Monat oder Tag-Variablen nicht zuweisen. Die Variable d wird durch den Aufruf mutiert, was offensichtlich alles ist, was Sie brauchen.

  • Umwandlung in Ganzzahl kann mit den einheitlichen +

  • Obwohl der Monat Nummerierung Null ist basierend durchgeführt werden, es macht keinen Sinn, 1 zusätzliche hinzuzufügen, wenn die day Variable soll eine Anzahl von Monaten hinzuzufügen. Also lass die + 1 fallen.

So können Sie vereinfachen, wie folgt:

if (year !== '') d.setFullYear(d.getFullYear() + +year); 
if (month !== '') d.setMonth(d.getMonth() + +month); 
if (day !== '') d.setDate(d.getDate() + +day); 
+0

Sehr geehrter Herr, Sie sind heute die größte Person in meinem Leben !! Vielen Dank für Ihre Zeit und Einsicht zu allen Punkten, die Sie markiert haben. – JDOE

+0

Gern geschehen ;-) – trincot

0

Willkommen! Was versuchst du zu erreichen? Momentan ist deine Logik kaputt. Zum Beispiel, wenn „Tag“ nicht leer ist, die erste „if“ Klausel ausgelöst wird, aber keiner der anderen, dass Test für „Tag“ leer ist ...

+0

ja ich habe gerade festgestellt, dass während des Testens und ich arbeite an den Bedingungen – JDOE

+0

Diese "Antwort" wäre besser geeignet als Kommentar. – trincot

+0

Willkommen! Dies sollte als Kommentar nicht als Antwort/Lösung gepostet werden. – NewToJS

Verwandte Themen