der_gretges: Globale Variable lässt sich nur 2x ändern

Hallo zusammen,

in meiner ausgelagerten *.js-Datei deklariere ich zwei globable Variablen:

x = "text1";
y = "text2";

Ich möchte mit 1 HTML-Seite 2 sehr ähnliche Workflows dokumentieren und per Button zwischen den beiden hin- und herschalten.
In meiner Funktion switch() werden dazu verschiedene Grafik- und Dateireferenzen geändert. Beispiel:

document.getElementById("Grafik").src = "img/Workflow_" + x + ".gif";

Am Ende der Funktion "lege ich den Schalter um":

x = y;

Das klappt dann 2x und danach wird (per Inputfeld-Ausgabe getestet) x nicht mehr geändert. Habe ich etwas falsch gemacht, oder muss ich den für x reservierten Speicher immer erst flushen? Wenn ja, wie geht das?

Danke im Voraus und Gruß,
Basti

  1. x = y;

    Das klappt dann 2x und danach wird (per Inputfeld-Ausgabe getestet) x nicht mehr geändert. Habe ich etwas falsch gemacht, oder muss ich den für x reservierten Speicher immer erst flushen? Wenn ja, wie geht das?

    In JS gibt's nichts zu flushen.
    Wenn x und y gleich sind kann sich x ja auch nicht mehr ändern.

    Struppi.

    1. Hi Struppi,

      In JS gibt's nichts zu flushen.

      Schonmal gut zu wissen! :-)

      Wenn x und y gleich sind kann sich x ja auch nicht mehr ändern.

      Dachte gerade, ich sei wirklich dämlich, bin aber nur nachlässig: am Anfang der switch()-Funktion wird bei x == y die (Hilfs-) Variable y auf "text1" gesetzt. Hatte vergessen dies zu erwähnen. (mea culpa...)
      Vollständige Funktion also:

      function switch() {
        if ( x==y ) {
          y = "text1";
        }

      [...]

      x = y;
      }

      Gruß,
      Basti

      1. Wenn x und y gleich sind kann sich x ja auch nicht mehr ändern.
        Dachte gerade, ich sei wirklich dämlich, bin aber nur nachlässig: am Anfang der switch()-Funktion wird bei x == y die (Hilfs-) Variable y auf "text1" gesetzt. Hatte vergessen dies zu erwähnen. (mea culpa...)

        Das kommt aufs selbe raus, eine typische Variabeln switch Funktion sieht so aus:

        var tmp = y;
        y = x;
        x = tmp;

        Struppi.

        1. Das kommt aufs selbe raus, eine typische Variabeln switch Funktion sieht so aus:

          var tmp = y;
          y = x;
          x = tmp;

          Struppi.

          (Ich muss lernen, mich genauer auszudrücken!)
          Ich möchte nicht die Inhalte zweier Variablen vertauschen.
          Ich habe eine Basis-Variable x, die den Wert "text1" annimmt. Dann schreibe ich meinen HTML-Code neu, indem ich statische Strings mit der Variable x kombiniere, z. B. mit
          document.write("blabla" + x);
          Am Ende der Funktion lade fülle ich meine Basis-Variable x mit dem Wert der Hilfs-Variablen y. Am Ende der Funktion ist also x == y. Wird die Funktion nun erneut aufgerufen, weil der Anwender wieder "zurückschalten" will, ändert sich wieder der HTML-Code, allerdings diesmal mit dem "neuen" Wert von x. Außerdem wird vor Ausführung des Funktions-Codes ( x == y ) abgefragt und bei true die Hilfs-Variable y mit dem anderen möglichen Wert gefüllt ( "text1" ). Danach sollte sich alles wiederholen. Tuts nur leider nicht.

          Danke schonmal für die Brainpower!
          Gruß,
          Basti

      2. Hallo Basti,

        [...] am Anfang der switch()-Funktion ...
        function switch()

        das hast du nicht wirklich so in deinem Javascript-Code stehen?
        Das kann unmöglich etwas anderes als eine Fehlermeldung produzieren, da switch ein reserviertes Keyword ist und nicht als Funktionsname verwendet werden kann.

        So long,
         Martin

        --
        Zwischen Leber und Milz
        passt immer noch'n Pils.
        1. [...] am Anfang der switch()-Funktion ...
          function switch()

          das hast du nicht wirklich so in deinem Javascript-Code stehen?

          Nein, hab ich nicht. Die Funktion heißt sw(). Ich habe hier nur der Übersichtlichkeit halber einen selbstsprechenden Namen angegeben.

          Gruß,
          Basti

          P.S.: Man stelle sich vor, ich hätte zudem meine Variablen case, break oder default genannt... *g*