Florian: JavaScript var funktioniert nicht

Hallo, ich kenne mich mit JavaScript nicht so gut aus, habe aber folgendes Problem:

Ich habe versucht ein Script übersichtlicher zu machen indem ich 2 verwendete Teile im Script, die ich häufiger Editieren muss, als Variable (var) an den Anfang zu setzen.

Ich habe also folgendes am Anfang:

<script type="text/javascript">
var videoDATUM = 2016,1,14,03,0,0;
var videoURL = "[URL]";
[...]

und später dann

expire: function(idxs){
		window.location=videoURL;
	},

und am Ende

window.onload=function(){
	var cdown = new CDown();

	cdown.add(new Date(videoDATUM), "NewVideo");
};

Dennoch ist es nicht das selbe wie

expire: function(idxs){
		window.location="[URL]";
	},

und am Ende

window.onload=function(){
	var cdown = new CDown();

	cdown.add(new Date(2016,1,14,03,0,0), "NewVideo");
};
  1. @@Florian

    var videoDATUM = 2016,1,14,03,0,0;

    Schau mal in die Konsole deines Browsers (ein Tab in den Entwicklertools), ob da vielleicht ein Fehler gemeldet wird.

    LLAP 🖖

    --
    „Wir haben deinen numidischen Schreiber aufgegriffen, o Syndicus.“
    „Hat auf dem Forum herumgelungert …“
    (Wachen in Asterix 36: Der Papyrus des Cäsar)
    1. Hi Gunnar,

      var videoDATUM = 2016,1,14,03,0,0;

      Schau mal in die Konsole deines Browsers (ein Tab in den Entwicklertools), ob da vielleicht ein Fehler gemeldet wird.

      wird nicht. Warum auch?
      Diese Deklaration ist syntaktisch völlig okay, auch wenn der Komma-Operator hier eher wenig Sinn ergibt.

      EDIT: Ich nehme alles zurück und behaupte das Gegenteil. :-(

      So long,
       Martin

      1. @@Der Martin

        Schau mal in die Konsole deines Browsers (ein Tab in den Entwicklertools), ob da vielleicht ein Fehler gemeldet wird.

        wird nicht. Warum auch?

        Hehe, ich sagte „schau mal“, nicht „rate mal“. ;-)

        LLAP 🖖

        --
        „Wir haben deinen numidischen Schreiber aufgegriffen, o Syndicus.“
        „Hat auf dem Forum herumgelungert …“
        (Wachen in Asterix 36: Der Papyrus des Cäsar)
        1. Hallo,

          Schau mal in die Konsole deines Browsers (ein Tab in den Entwicklertools), ob da vielleicht ein Fehler gemeldet wird.

          wird nicht. Warum auch?

          Hehe, ich sagte „schau mal“, nicht „rate mal“. ;-)

          Ja, aber du hast ja den Theo angesprochen, nicht uns Cracks, die das Debugging im Kleinhirn vornehmen...

          Gruß
          Kalk

          1. Aloha ;)

            Schau mal in die Konsole deines Browsers (ein Tab in den Entwicklertools), ob da vielleicht ein Fehler gemeldet wird.

            wird nicht. Warum auch?

            Hehe, ich sagte „schau mal“, nicht „rate mal“. ;-)

            Ja, aber du hast ja den Theo angesprochen, nicht uns Cracks, die das Debugging im Kleinhirn vornehmen...

            Naja, ich weiß ja nicht wie das bei dir ist, aber mein Kleinhirn praktiziert gelegentlich sogar lazy evaluation...

            Grüße,

            RIDER

            --
            Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
            # Facebook # Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[
            1. Hallo,

              Naja, ich weiß ja nicht wie das bei dir ist, aber mein Kleinhirn praktiziert gelegentlich sogar lazy evaluation...

              jo, meins fängt sogar an, sich auf den lazy-Teil zu beschränken...

              Gruß
              Kalk

              1. Hi,

                Naja, ich weiß ja nicht wie das bei dir ist, aber mein Kleinhirn praktiziert gelegentlich sogar lazy evaluation...

                jo, meins fängt sogar an, sich auf den lazy-Teil zu beschränken...

                kommt mir bekannt vor. Aber lieber eine gesunde Faulheit, als eine faule Gesundheit.

                So long,
                 Martin

            2. Hi,

              Naja, ich weiß ja nicht wie das bei dir ist, aber mein Kleinhirn praktiziert gelegentlich sogar lazy evaluation...

              nennt man das so, wenn das Großhirn sagt: "Du solltest endlich deine Studienarbeit fertig schreiben", und das Kleinhirn antwortet: "Keine Lust, Abgabetermin ist erst am Freitag, da reicht's auch noch, wenn ich am Mittwoch anfange"?

              *scnr*
               Martin

              1. Hallo,

                nennt man das so, wenn das Großhirn sagt: "Du solltest endlich deine Studienarbeit fertig schreiben", und das Kleinhirn antwortet: "Keine Lust, Abgabetermin ist erst am Freitag, da reicht's auch noch, wenn ich am Mittwoch anfange"?

                Wie jetzt? Und was ist mit Donnerstag?

                Gruß
                Kalk

                1. Hi,

                  nennt man das so, wenn das Großhirn sagt: "Du solltest endlich deine Studienarbeit fertig schreiben", und das Kleinhirn antwortet: "Keine Lust, Abgabetermin ist erst am Freitag, da reicht's auch noch, wenn ich am Mittwoch anfange"?

                  Wie jetzt? Und was ist mit Donnerstag?

                  am Donnerstag ist Party, ich weiß blo0 noch nicht, wo. Bist du nicht eingeladen? ;-)

                  Bis Donnerstag,
                   Martin

  2. Moin,

    Hallo, ich kenne mich mit JavaScript nicht so gut aus

    das ist offensichtlich. Aber nicht schlimm. ;-)

    Ich habe versucht ein Script übersichtlicher zu machen indem ich 2 verwendete Teile im Script, die ich häufiger Editieren muss, als Variable (var) an den Anfang zu setzen.

    Der Gedanke ist an sich gut. Aber das funktioniert natürlich nur, wenn das, was du ersetzen willst, auch ein gültiger Ausdruck ist, dessen Wert in einer Variablen gespeichert werden kann. Also ein Zahlenwert, ein String, eventuell auch ein Objekt oder ein Array.

    var videoDATUM = 2016,1,14,03,0,0;
    var videoURL = "[URL]";
    [...]
    

    Die zweite Deklaration ist in Ordnung: Das ist ein String, der in einer Variablen abgelegt wird. Das funktioniert so, wie du es erwartest.
    Die erste Zuweisung ist aber Murks. Du hast da rechts von der Zuweisung nicht einen Wert stehen, sondern sechs durch Komma getrennte. Gemein ist an dieser Stelle, dass die Syntax von Javascript das sogar erlaubt: Alle durch Komma getrennten Ausdrücke werden "berechnet", und der letzte davon gilt dann. Im Endeffekt ist das also dasselbe als stünde da

    var videoDATUM = 0;
    

    Wenn du also dasselbe Datum an mehreren Stellen wieder einsetzen willst, dann solltest du stattdessen das gesamte vorausberechnete Date-Objekt speichern:

    var videoDATUM = new Date(2016,1,14,03,0,0);
    

    So wird das Date-Objekt einmal erstellt und steht dann "fertig" zur Verfügung.

    und später dann

    window.onload=function(){
    	var cdown = new CDown();
    
    	cdown.add(videoDATUM, "NewVideo");
    };
    

    So könnte ein Schuh draus werden.

    So long,
     Martin

    1. Hallo,

      So könnte ein Schuh draus werden.

      Das sollte Florian also nur dann so machen, wenn er eine Seite für einen Schuhmacher erstellt ;)

      scnr

      Gruß
      Kalk

    2. Hallo Martin

      var videoDATUM = 2016,1,14,03,0,0;
      

      […] Gemein ist an dieser Stelle, dass die Syntax von Javascript das sogar erlaubt.

      Bist du sicher? ;-)

      Innerhalb eines Variable Statements können durch Komma getrennt mehrere Variable Declarations aufgelistet werden, bei denen wiederum die Wertzuweisung optional ist, der Identifier jedoch nicht.

      Beispielsweise var x = 1, y, z; ist erlaubt, während bei dem zitierten Code von oben nach dem ersten Komma ein Syntaxfehler geworfen wird, da 1 kein legaler Bezeichner ist:

      SyntaxError: missing variable name
      

      Gruß,

      Orlok

      --
      „Das Wesentliche einer Kerze ist nicht das Wachs, das seine Spuren hinterlässt, sondern das Licht.“ Antoine de Saint-Exupéry
      1. Hallo,

        var videoDATUM = 2016,1,14,03,0,0;
        

        […] Gemein ist an dieser Stelle, dass die Syntax von Javascript das sogar erlaubt.

        Bist du sicher? ;-)

        bis gerade eben ja ...

        Innerhalb eines Variable Statements können durch Komma getrennt mehrere Variable Declarations aufgelistet werden, bei denen wiederum die Wertzuweisung optional ist, der Identifier jedoch nicht.

        Ah, stimmt. Ein etwas anderer Kontext. Damit ist meine Antwort an Gunnar natürlich auch Käse.

        Beispielsweise var x = 1, y, z; ist erlaubt, während bei dem zitierten Code von oben nach dem ersten Komma ein Syntaxfehler geworfen wird, da 1 kein legaler Bezeichner ist

        Ja, ich seh's ein.

        Ciao,
         Martin

        1. Hallo,

          Ja, ich seh's ein.

          Aber ansonsten war schon viel Richtiges an deiner Antwort!

          Gruß
          Kalk

    3. erscheint mir sinnvoll, wusste ich allerdings noch nicht. Da hätte ich ja noch Jahre dran rumbasteln können.... habe jetzt

      var videoDATUM = new Date(2016,1,14,03,0,0);
      

      und

      window.onload=function(){
      	var cdown = new CDown();
      
      	cdown.add(videoDATUM, "NewVideo");
      };
      

      und es scheint alles zu funktionieren.