D.R.: if-operatoren...bräuchte Hilfe

Hi,

ich hab auf meiner Seite einen Button erstellt, womit man die Seite
nach den eigenen Lesegewohnheiten konfigurieren kann. Standerd ist
mit max-width, aber man kann die Seite auch ohne max-width
und allem drum und dran anschauen, wenn man auf den Button klickt.
Auch die beibehaltung dieser Einstellung durch Cookies habe ich mehr
oder weniger geschaft. Es funktioniert zwar, aber wenn ich die Seite
im "Volbild" neu lade ist der Button wieder so, wie er anfangs war
und funktioniert nicht mehr.

Das ganze Disaster könnte ihr euch hier
anschauen.

Ich bräuche Wahrscheinlich if-Anweisungen. Aber meine Versuche
scheiterten.

Ich bräuchte sowas in der Form:

Wenn html die id "full" besitzt, dann mache...
Wenn html die id "htm" besitzt, dann mache...

meine bisherigen Versuche konnt ihr ja in der entpr. Script-Datei
sehen.

Zur Not ginge es ja auch per display:none (CSS), und write (js),
was mir aber etwas unsauber und aufwändig erscheint. Bei akt.
js und deakt. CSS werden dann außerdem mehrere Buttons angezeigt.

Wie funktionieren if-Anweisungen also richtig? Mit SELFHTML hab ich's schon versucht, aber irgendwie blick ich da nicht durch...

Vielen Dank schon mal für eure Hilfe!

--
Mein Lieblings-Browser:
Firefox 1.5
Mein Lieblings-Notepad:
Notepad 2
  1. Hi,

    Ich bräuche Wahrscheinlich if-Anweisungen.

    zum Glück brauchst Du keine if-Schleifen, wie so viele andere ;-)

    Ich bräuchte sowas in der Form:
    Wenn html die id "full" besitzt, dann mache...
    Wenn html die id "htm" besitzt, dann mache...

    Dazu musst Du a) html vorliegen haben (also, wenn ich Dich recht verstehe, das <html>-Element ermitteln), und b) dessen id-Eigenschaft c) mit z.B. 'htm' vergleichen. Was Du statt dessen machst, ist das <html>-Element selbst mit einer nicht vorhandenen Variablen namens htm zu vergleichen.

    Wie funktionieren if-Anweisungen also richtig?

    Einfach das Richtige mit dem Richtigen vergleichen, nicht das Falsche mit dem Falschen.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi,

      Erstmal Danke für deine Antwort. Aber irgendwie komm ich so auch nicht weiter. Am Besten wir gehen das mal Schritt für Schritt duch:

      Dazu musst Du a) html vorliegen haben (also, wenn ich Dich recht verstehe, das <html>-Element ermitteln),

      Das versuche ich durch diese Zeile zu erreichen:
      if (document.getElementsByTagName("html")[0] == htm)

      und b) dessen id-Eigenschaft

      Die steht bei obiger Zeile hinter dem "==". HTML heißt am Anfang "htm".

      c) mit z.B. 'htm' vergleichen. Was Du statt dessen machst, ist das <html>-Element selbst mit einer nicht vorhandenen Variablen namens htm zu vergleichen.

      Ich wollte damit halt prüfen, ob html die ID "htm" hat und falls ja die entspr. Eigenschaften anwenden.

      Wie funktionieren if-Anweisungen also richtig?

      Einfach das Richtige mit dem Richtigen vergleichen, nicht das Falsche mit dem Falschen.

      Ist also falsch, wenn ich bei HTML schaue, ob es die ID "htm" hat? Wie soll ich das sonst machen?

      hier noch mal die ges. Funktion. Vielleicht kannst mir meine Fehler hier besser zeigen:

        
      function textaendern(name) {  
      if (document.getElementsByTagName("html")[0] == htm)  
      document.getElementById(name).firstChild.nodeValue = 'volle Breite';  
      document.getElementById(name).href="javascript:anpassen('htm');aendern('b2');writeCookie('myCookie',document.getElementsByTagName('html')[0].id,24);"  
      if (document.getElementsByTagName("html")[0] == full)  
      document.getElementById(name).firstChild.nodeValue = 'volle Breite';  
      document.getElementById(name).href="javascript:normalwidth('full');aendern('b2');writeCookie('myCookie',document.getElementsByTagName('html')[0].id,24);"  
      }
      

      Einen schönen Donnerstag noch und ich hoffe, du kannst mit helfen!

      --
      Mein Lieblings-Browser:
      Firefox 1.5
      Mein Lieblings-Notepad:
      Notepad 2
      1. Hallo,

        if (document.getElementsByTagName("html")[0] == htm)

        Was Du statt dessen machst, ist das <html>-Element selbst mit einer nicht vorhandenen Variablen namens htm zu vergleichen.

        wie Cheatah schon sagte: Links vom Operator '==' (Vergleich) steht ein Objekt (nämlich eine Referenz auf das html-Element im DOM), und rechts vom '==' eine Variable namens htm. Du prüfst also, ob das html-Objekt gleich der Variablen htm ist.

        Ich wollte damit halt prüfen, ob html die ID "htm" hat

        Also solltest du genau das als erstes tun:

        if (document.getElementsByTagName("html")[0].id)

        Dieser Ausdruck wird wahr (true), wenn die Eigenschaft 'id' des html-Objekts existiert.

        und falls ja die entspr. Eigenschaften anwenden.

        Welche Eigenschaften?

        Wie funktionieren if-Anweisungen also richtig?

        if (ausdruck)
         { anweisung;
         }

        Sowie der ausdruck in der if-Klammer einen Wert ergibt, der nicht Null ist, gilt die if-Bedingung als erfüllt. Als Null gilt dabei der Zahlenwert 0, der boolsche Wert false (z.B. bei einem fehlgeschlagenen Vergleich), der Leerstring "", oder auch eine nicht existierende Eigenschaft eines Objekts.

        Ist also falsch, wenn ich bei HTML schaue, ob es die ID "htm" hat?

        Nein. Aber dann solltest du das auch richtig machen. ;-)
        Also erstmal überprüfun, ob die id-Eigenschaft überhaupt existiert (s.o.), und sie dann mit dem gewünschten Wert vergleichen. Und dabei berücksichtigen, dass Stringkonstanten anders notiert werden als Variablen.

        So long,
         Martin

        --
        Lache, und die Welt wird mit dir lachen.
        Schnarche, und du schläfst allein.
        1. Hi,

          Was Du statt dessen machst, ist das <html>-Element selbst mit einer nicht vorhandenen Variablen namens htm zu vergleichen.

          wie Cheatah schon sagte: Links vom Operator '==' (Vergleich) steht ein Objekt (nämlich eine Referenz auf das html-Element im DOM),

          Soweit war meine Idde also erstmal korrkt. Gut soviel hab ich verstanden, aber:

          rechts vom '==' eine Variable namens htm. Du prüfst also, ob das html-Objekt gleich der Variablen htm ist.

          Wie erstellt man denn eine Variable (ich weiß zwar, dass es mit "var" geht, aber nicht, wie ich das machen soll)

          Ich wollte damit halt prüfen, ob html die ID "htm" hat

          Also solltest du genau das als erstes tun:

          if (document.getElementsByTagName("html")[0].id)

          Dieser Ausdruck wird wahr (true), wenn die Eigenschaft 'id' des html-Objekts existiert.

          Ich will doch aber nicht nur prüfen, ob es irgendeine ID gibt, sondern ob diese "full" oder "htm" heißt. Und danach will ich dann den Button entsprechend einrichten.

          und falls ja die entspr. Eigenschaften anwenden.

          Welche Eigenschaften?

          Ich will den Linktext und den Link-href ändern.

          Wie funktionieren if-Anweisungen also richtig?

          if (ausdruck)
          { anweisung;
          }

          Gut, das hab ich erstmal entspr. bei mir korrigiert.

          Sowie der ausdruck in der if-Klammer einen Wert ergibt, der nicht Null ist, gilt die if-Bedingung als erfüllt. Als Null gilt dabei der Zahlenwert 0, der boolsche Wert false (z.B. bei einem fehlgeschlagenen Vergleich), der Leerstring "", oder auch eine nicht existierende Eigenschaft eines Objekts.

          Ist also falsch, wenn ich bei HTML schaue, ob es die ID "htm" hat?

          Nein. Aber dann solltest du das auch richtig machen. ;-)
          Also erstmal überprüfun, ob die id-Eigenschaft überhaupt existiert (s.o.), und sie dann mit dem gewünschten Wert vergleichen.

          Ich weiß aber nicht, wie ich das machen soll. Hab jetzt folgenden Code:

            
            
          function textaendern(name) {  
          if (document.getElementsByTagName("html")[0].id)  
          if (document.getElementsByTagName("html")[0].id == "htm"){  
          document.getElementById(name).firstChild.nodeValue = 'volle Breite';  
          document.getElementById(name).href="javascript:anpassen('htm');aendern('b2');writeCookie('myCookie',document.getElementsByTagName('html')[0].id,24);"}  
          if (document.getElementsByTagName("html")[0].id)  
          if (document.getElementsByTagName("html")[0].id == "full"){  
          document.getElementById(name).firstChild.nodeValue = 'volle Breite';  
          document.getElementById(name).href="javascript:normalwidth('full');aendern('b2');writeCookie('myCookie',document.getElementsByTagName('html')[0].id,24);"  
          }}  
          
          

          Ich weiß, ich steht hier irgendwie auf dem Schlauch, aber ich komm einfach nicht weiter. Gibt es vielleicht irgendwo fertige Codebeispiele under Webseiten, auf denen sowas umgesetzt wird?

          Einen schönen Freitag noch!

          --
          Mein Lieblings-Browser:
          Firefox 1.5
          Mein Lieblings-Notepad:
          Notepad 2
          1. Hallo,

            rechts vom '==' eine Variable namens htm. Du prüfst also, ob das html-Objekt gleich der Variablen htm ist.
            Wie erstellt man denn eine Variable (ich weiß zwar, dass es mit "var" geht, aber nicht, wie ich das machen soll)

            wenn ich deine ursprüngliche Fragestellung richtig verstanden habe, wolltest du doch auf konstante Ausdrücke prüfen, nicht gegen Variablen.

            Ansonsten hast du mit dem 'var' schon Recht: Damit vereinbarst du eine neue Variable, die dann aber nur in dem Kontext existiert, in dem sie deklariert wurde (z.B. lokal innerhalb der Funktion).
            Wenn sie nicht lokal sein soll, kann man sie auch definieren, indem man ihr einfach einen Wert zuweist. Dabei wird eine Variable gleichzeitig neu angelegt, wenn sie noch nicht existiert.

            Ich will doch aber nicht nur prüfen, ob es irgendeine ID gibt, sondern ob diese "full" oder "htm" heißt.

            Sorry, ja - den Schritt habe ich völlig verpennt. ;-)

            Welche Eigenschaften?
            Ich will den Linktext und den Link-href ändern.

            Ah, das kommt dann erst später.

            function textaendern(name) {
            if (document.getElementsByTagName("html")[0].id)
            if (document.getElementsByTagName("html")[0].id == "htm"){

            Richtig. Allerdings kann man diese beiden Bedingungen dann auch mit dem UND-Operator zusammenfassen:
             if (document.getElementsByTagName("html")[0].id
              && document.getElementsByTagName("html")[0].id == "htm")
            Zwei "ifs" nacheinander zu notieren, ist zumindest ungewöhnlich.

            document.getElementById(name).firstChild.nodeValue = 'volle Breite';
            document.getElementById(name).href="javascript:anpassen('htm');

            Das ist zwar aus der Javascript-Perspektive auch korrekt, aber einen Link mit dem Pseudoprotokoll "javascript:" sollte man eigentlich vermeiden. Eleganter ist es, einem beliebigen Element einen onclick-Handler zu verpassen.

            Ich weiß, ich steht hier irgendwie auf dem Schlauch, ...

            Ach was, könnt' schlimmer sein. ;-)

            aber ich komm einfach nicht weiter. Gibt es vielleicht irgendwo fertige Codebeispiele under Webseiten, auf denen sowas umgesetzt wird?

            Gibt es bestimmt - aber ich kenne keine.

            Ciao,
             Martin

            --
            Ich wollt', ich wär ein Teppich. Dann könnte ich morgens liegenbleiben.
            1. Hi,

              wenn ich deine ursprüngliche Fragestellung richtig verstanden habe, wolltest du doch auf konstante Ausdrücke prüfen, nicht gegen Variablen.

              Ansonsten hast du mit dem 'var' schon Recht: Damit vereinbarst du eine neue Variable, die dann aber nur in dem Kontext existiert, in dem sie deklariert wurde (z.B. lokal innerhalb der Funktion).
              Wenn sie nicht lokal sein soll, kann man sie auch definieren, indem man ihr einfach einen Wert zuweist. Dabei wird eine Variable gleichzeitig neu angelegt, wenn sie noch nicht existiert.

              Gut, dann brauch ich das also dich nicht. Da bin ich aber erleichert...

              Ich will doch aber nicht nur prüfen, ob es irgendeine ID gibt, sondern ob diese "full" oder "htm" heißt.

              Sorry, ja - den Schritt habe ich völlig verpennt. ;-)

              War das von also doch richtig? Das "==" darf ich dort aber nicht verwenden oder wie macht man das richtig?

              Welche Eigenschaften?
              Ich will den Linktext und den Link-href ändern.

              Ah, das kommt dann erst später.

              Diese funktion habe ich ja auch schon definiert.

              function textaendern(name) {
              if (document.getElementsByTagName("html")[0].id)
              if (document.getElementsByTagName("html")[0].id == "htm"){

              Richtig. Allerdings kann man diese beiden Bedingungen dann auch mit dem UND-Operator zusammenfassen:
              if (document.getElementsByTagName("html")[0].id
                && document.getElementsByTagName("html")[0].id == "htm")
              Zwei "ifs" nacheinander zu notieren, ist zumindest ungewöhnlich.

              Hab ich gemacht - das hat das Problem aber nicht behoben. Irgendwie habe ich auch das Gefühl, dass ich nur 1 if brauche...(oder). Aber wie überprüfe ich die ID?

              document.getElementById(name).firstChild.nodeValue = 'volle Breite';
              document.getElementById(name).href="javascript:anpassen('htm');

              Das ist zwar aus der Javascript-Perspektive auch korrekt, aber einen Link mit dem Pseudoprotokoll "javascript:" sollte man eigentlich vermeiden. Eleganter ist es, einem beliebigen Element einen onclick-Handler zu verpassen.

              Ja, aber so weit ich weiß, wegen Nutzern, die js ausgeschaltet haben. Da ich den href aber eh erst per Script ändere, düfte das keine Rolle spielen. Außerdem ist es 1. viel komplizierter, den href erst zu löschen und dann onclick zu erstellen und 2. gilt onclick glaube ich, nur für die Mausbedienung und nicht für die Tastatur (onkeypress kann ich mir ersparen). Was ist eigentlich so schlimm am "href"? Ich würde es sogar als barrierefreier einstufen. Zumal der Nutzer so etwas in der Statuszeile sieht, was ihm eine ungefähre Vorstellung über das geben könnte, was pssiert, wenn er klickt (Vorrausgesetzt, der Web-Autor verwendet aussagekräftige Funktionsnamen).

              Ich weiß, ich steht hier irgendwie auf dem Schlauch, ...

              Ach was, könnt' schlimmer sein. ;-)

              Da bin ich aber beruhigt :-)

              Derzeit sieht meine Funktion so aus:

                
              function textaendern(name) {  
              if (document.getElementsByTagName("html")[0].id  
              && document.getElementsByTagName("html")[0].id == "htm"){  
              document.getElementById(name).firstChild.nodeValue = 'volle Breite';  
              document.getElementById(name).href="javascript:anpassen('htm');aendern('b2');writeCookie('myCookie',document.getElementsByTagName('html')[0].id,24);"}  
              if (document.getElementsByTagName("html")[0].id)  
              && (document.getElementsByTagName("html")[0].id == "full"){  
              document.getElementById(name).firstChild.nodeValue = 'volle Breite';  
              document.getElementById(name).href="javascript:normalwidth('full');aendern('b2');writeCookie('myCookie',document.getElementsByTagName('html')[0].id,24);"  
              }}  
              
              

              Leider kann ich kein Beispiel ins Web stellen, da die Funpic-Server zur Zeit nicht funktionieren :-(

              Einen schönen Freitag noch!

              --
              Mein Lieblings-Browser:
              Firefox 1.5
              Mein Lieblings-Notepad:
              Notepad 2
              1. n'Abend!

                Ich will doch aber nicht nur prüfen, ob es irgendeine ID gibt, sondern ob diese "full" oder "htm" heißt.
                Sorry, ja - den Schritt habe ich völlig verpennt. ;-)
                War das von also doch richtig? Das "==" darf ich dort aber nicht verwenden oder wie macht man das richtig?
                if (document.getElementsByTagName("html")[0].id
                  && document.getElementsByTagName("html")[0].id == "htm")

                Doch, den Gleichheitsoperator == musst du schon verwenden - aber erst, nachdem du überprüft hast, ob die id-Eigenschaft überhaupt existiert (erste if-Bedingung). Tust du das nicht, dann ergibt die Abfrage auf Gleichheit (zweite if-Bedingung) einen Fehler, wenn id nicht existiert.

                Irgendwie habe ich auch das Gefühl, dass ich nur 1 if brauche...(oder). Aber wie überprüfe ich die ID?

                Mit den erwähnten kombinierten Bedingungen: Damit überprüfst du erst, ob id existiert, und dann, ob es den gewünschten Wert hat.

                [Pseudoprotokoll "javascript:"]
                Ja, aber so weit ich weiß, wegen Nutzern, die js ausgeschaltet haben.

                Nicht nur, aber *auch* deshalb. Es ist aber auch eine Frage der Ordnung: Ein Link dient normalerweise zum Anfordern einer neuen Ressource. Das Aufrufen von Javascript-Funktionen ist damit zwar auch möglich, gilt aber als "unordentlich".

                Da ich den href aber eh erst per Script ändere, düfte das keine Rolle spielen.

                Ja, damit hast du ein Argument entkräftet, bleibt nur noch der idealistische Ansatz. ;-)

                Außerdem ist es 1. viel komplizierter, den href erst zu löschen und dann onclick zu erstellen

                ACK.

                und 2. gilt onclick glaube ich, nur für die Mausbedienung und nicht für die Tastatur (onkeypress kann ich mir ersparen).

                Das kommt drauf an, für welches Element der Eventhandler notiert ist. Bei Links, Buttons, o.ä. feuert onclick auch, wenn sie per Tastatur ausgelöst werden; bei Bildern oder anderen Elementen, die nicht auf die Tastatur reagieren, natürlich nicht.

                Was ist eigentlich so schlimm am "href"? Ich würde es sogar als barrierefreier einstufen.

                Nein, eigentlich sollte, wenn wir vom Link reden, im href eine Ressource stehen, die dem Benutzer ohne Javascript einen alternativen, vielleicht weniger komfortablen Zugang zur vorgesehenen Ressource bietet.

                So long,
                 Martin

                --
                Viele Fachleute vertreten die Ansicht, jedes Feature eines Programms, das sich nicht auf Wunsch abstellen lässt, sei ein Bug.
                Außer bei Microsoft. Da ist es umgekehrt.
                1. Hi,

                  Ich will doch aber nicht nur prüfen, ob es irgendeine ID gibt, sondern ob diese "full" oder "htm" heißt.
                  Sorry, ja - den Schritt habe ich völlig verpennt. ;-)
                  War das von also doch richtig? Das "==" darf ich dort aber nicht verwenden oder wie macht man das richtig?
                  if (document.getElementsByTagName("html")[0].id
                    && document.getElementsByTagName("html")[0].id == "htm")

                  Doch, den Gleichheitsoperator == musst du schon verwenden - aber erst, nachdem du überprüft hast, ob die id-Eigenschaft überhaupt existiert (erste if-Bedingung). Tust du das nicht, dann ergibt die Abfrage auf Gleichheit (zweite if-Bedingung) einen Fehler, wenn id nicht existiert.

                  Warum funktioniert mein Ansatz dann aber nicht? Wenn ich dort die 2. Variante (wenn html "full" heißen soll), lösche, wird der Button wieder korrekt umbenannt und der href geändert. Anscheinend werden also beide Schleifen als korrekt interpretiert. Wenn ich die Anführungszeichen bei "htm" und "full" wieder lösche, geht gar nichts mehr. Irgendwo muss also ein Fehler sein. Ich weiß nur nicht wo :-(

                  [Pseudoprotokoll "javascript:"]
                  Ja, aber so weit ich weiß, wegen Nutzern, die js ausgeschaltet haben.

                  Nicht nur, aber *auch* deshalb. Es ist aber auch eine Frage der Ordnung: Ein Link dient normalerweise zum Anfordern einer neuen Ressource. Das Aufrufen von Javascript-Funktionen ist damit zwar auch möglich, gilt aber als "unordentlich".

                  Bei einer Textmarke steuert man doch aber auch keine neue Ressouce an, sondern bewegt sich nur auf der aktuellen Seite.

                  und 2. gilt onclick glaube ich, nur für die Mausbedienung und nicht für die Tastatur (onkeypress kann ich mir ersparen).

                  Das kommt drauf an, für welches Element der Eventhandler notiert ist. Bei Links, Buttons, o.ä. feuert onclick auch,

                  Kann man sie dann eigentlich auch noch mit der Tabulator-Taste ansteueren, wenn kein href-Attribut existiert?

                  Nein, eigentlich sollte, wenn wir vom Link reden, im href eine Ressource stehen, die dem Benutzer ohne Javascript einen alternativen, vielleicht weniger komfortablen Zugang zur vorgesehenen Ressource bietet.

                  Wenn der Nutzer aber javascript an hat, werden doch beide aktionen ausgeführt oder? Ein Nutzer mit javascript will doch aber keine neue Seite laden.

                  Einen schönen Samstag noch!

                  --
                  Mein Lieblings-Browser:
                  Firefox 1.5
                  Mein Lieblings-Notepad:
                  Notepad 2
                  1. Hallo,

                    Warum funktioniert mein Ansatz dann aber nicht? Wenn ich dort die 2. Variante (wenn html "full" heißen soll), lösche, wird der Button wieder korrekt umbenannt und der href geändert.

                    ändert deine JS-Funktion aendern() womöglich auch die ID des body-Elements in "full"? Dann wäre das Verhalten erklärbar: Wenn die ID "htm" heißt, wird der erste if-Block ausgeführt. Sobald der beendet ist, wäre die ID aber plötzlich "full", also trifft die Bedingung im zweiten if-Block jetzt auch zu und die darin notierten Anweisungen machen die Änderung wieder rückgängig.

                    Falls das so ist, setz mal vor die zweite if-Anweisung ein else, so dass der gesamte zweite Block nur beachtet wird, wenn die erste Bedingung nicht zutraf.

                    Bei einer Textmarke steuert man doch aber auch keine neue Ressouce an, sondern bewegt sich nur auf der aktuellen Seite.

                    Okay, Punkt für dich. ;-)

                    Das kommt drauf an, für welches Element der Eventhandler notiert ist. Bei Links, Buttons, o.ä. feuert onclick auch,
                    Kann man sie dann eigentlich auch noch mit der Tabulator-Taste ansteueren, wenn kein href-Attribut existiert?

                    Soweit ich eben ausprobiert habe: Nein. Die Navigation mit der Tab-Taste scheint nur die Elemente zu berücksichtigen, die sich auch im Normalfall für die Tastatur interessieren (Links und Formularelemente).

                    Nein, eigentlich sollte, wenn wir vom Link reden, im href eine Ressource stehen, die dem Benutzer ohne Javascript einen alternativen, vielleicht weniger komfortablen Zugang zur vorgesehenen Ressource bietet.
                    Wenn der Nutzer aber javascript an hat, werden doch beide aktionen ausgeführt oder? Ein Nutzer mit javascript will doch aber keine neue Seite laden.

                    Deswegen sollte der Javascript-Eventhandler auch false zurückgeben, wenn die normale Funktion z.B. des Links nicht auch noch zusätzlich ausgeführt werden soll. Mit false als Rückgabewert wird nämlich die weitere Verarbeitung des Events beendet.

                    Ciao,
                     Martin

                    --
                    Lebensmotto der Egoisten:
                    Was ist so schlimm daran, dass jeder nur an sich selbst denkt? Dann ist doch an alle gedacht!
                    1. Hi,

                      Warum funktioniert mein Ansatz dann aber nicht? Wenn ich dort die 2. Variante (wenn html "full" heißen soll), lösche, wird der Button wieder korrekt umbenannt und der href geändert.

                      ändert deine JS-Funktion aendern() womöglich auch die ID des body-Elements in "full"? Dann wäre das Verhalten erklärbar: Wenn die ID "htm" heißt, wird der erste if-Block ausgeführt. Sobald der beendet ist, wäre die ID aber plötzlich "full", also trifft die Bedingung im zweiten if-Block jetzt auch zu und die darin notierten Anweisungen machen die Änderung wieder rückgängig.

                      Falls das so ist, setz mal vor die zweite if-Anweisung ein else, so dass der gesamte zweite Block nur beachtet wird, wenn die erste Bedingung nicht zutraf.

                      Nein, das geht auch nicht. Am Besten ich kopiere hier mal die Meldungen meiner js-Konsolte (FF):

                      ####################
                      Fehler: syntax error
                      Quelldatei: file:///G:/aktuelles/Meine%20Webseite/test/test/test3/script2.js
                      Zeile: 14
                      Quelltext:
                      && (document.getElementsByTagName("html")[0].id == "full"){
                      ####################
                      Fehler: textaendern is not defined
                      Quelldatei: file:///G:/aktuelles/Meine%20Webseite/test/test/test3/Testseite2.html
                      Zeile: 1
                      ####################

                      Die 2. Meldung entsteht, glaube ich, durch die erste. Da diese Funktion ungültig ist, wird sie ja ignoriert und ist (für den Browser) nicht vorhanden. Vielleicht kannst du den Fehler ja irgenwie auf der 1. Meldung schlussfolgern.

                      Das kommt drauf an, für welches Element der Eventhandler notiert ist. Bei Links, Buttons, o.ä. feuert onclick auch,
                      Kann man sie dann eigentlich auch noch mit der Tabulator-Taste ansteueren, wenn kein href-Attribut existiert?

                      Soweit ich eben ausprobiert habe: Nein. Die Navigation mit der Tab-Taste scheint nur die Elemente zu berücksichtigen, die sich auch im Normalfall für die Tastatur interessieren (Links und Formularelemente).

                      Also ist href doch besser, denn diese Funktion sollen ja auch Leute ausführen können, die lieber mit der Tastatur arbeiten.

                      Nein, eigentlich sollte, wenn wir vom Link reden, im href eine Ressource stehen, die dem Benutzer ohne Javascript einen alternativen, vielleicht weniger komfortablen Zugang zur vorgesehenen Ressource bietet.
                      Wenn der Nutzer aber javascript an hat, werden doch beide aktionen ausgeführt oder? Ein Nutzer mit javascript will doch aber keine neue Seite laden.

                      Deswegen sollte der Javascript-Eventhandler auch false zurückgeben, wenn die normale Funktion z.B. des Links nicht auch noch zusätzlich ausgeführt werden soll. Mit false als Rückgabewert wird nämlich die weitere Verarbeitung des Events beendet.

                      Ist das nicht ein ganzes Stück komplizierter und Quelltext-lastiger?

                      Einen schönen Samstag noch!

                      --
                      Mein Lieblings-Browser:
                      Firefox 1.5
                      Mein Lieblings-Notepad:
                      Notepad 2
                      1. Hallo,

                        Nein, das geht auch nicht. Am Besten ich kopiere hier mal die Meldungen meiner js-Konsolte (FF):

                        ####################
                        Fehler: syntax error
                        Quelldatei: file:///G:/aktuelles/Meine%20Webseite/test/test/test3/script2.js
                        Zeile: 14
                        Quelltext:
                        && (document.getElementsByTagName("html")[0].id == "full"){
                        ####################

                        Was ist daran unklar? Eine JavaScriptanweisung, die mit && beginnt ist ein Syntaxfehler, weil && ein Operator ist, der nicht am Beginn einer Anweisung stehen darf, sondern nur zwischen zwei Werten.

                        In JavaScript beginnt mit jeder neuen Zeile auch eine neue Anweisung. Das Semikolon als Anweisungsabschluss ist nicht notwendig, nur sinnvoll.

                        viele Grüße

                        Axel

                        1. Hi,

                          Was ist daran unklar? Eine JavaScriptanweisung, die mit && beginnt ist ein Syntaxfehler, weil && ein Operator ist, der nicht am Beginn einer Anweisung stehen darf, sondern nur zwischen zwei Werten.

                          In JavaScript beginnt mit jeder neuen Zeile auch eine neue Anweisung. Das Semikolon als Anweisungsabschluss ist nicht notwendig, nur sinnvoll.

                          Als Der MArtin sagte, ich solle && statt eines 2. if nehmen, dachte ich halt, ich kann das eifach so ersetzen. Aber auch wenn ich beides in die gleiche Zeile schreibe:...

                            
                          function textaendern(name) {  
                          if (document.getElementsByTagName("html")[0].id && document.getElementsByTagName("html")[0].id == "htm"){  
                          document.getElementById(name).firstChild.nodeValue = 'volle Breite';  
                          document.getElementById(name).href="javascript:anpassen('htm');aendern('b2');writeCookie('myCookie',document.getElementsByTagName('html')[0].id,24);"}  
                          else if (document.getElementsByTagName("html")[0].id) && (document.getElementsByTagName("html")[0].id == "full"){  
                          document.getElementById(name).firstChild.nodeValue = 'volle Breite';  
                          document.getElementById(name).href="javascript:normalwidth('full');aendern('b2');writeCookie('myCookie',document.getElementsByTagName('html')[0].id,24);"  
                          }}
                          

                          ...funktioniert es nicht. Die Meldung lautet dann:

                          ######################
                          Fehler: syntax error
                          Quelldatei: file:///G:/aktuelles/Meine%20Webseite/test/test/test3/script2.js
                          Zeile: 12, Spalte: 54
                          Quelltext:
                          else if (document.getElementsByTagName("html")[0].id) && (document.getElementsByTagName("html")[0].id == "full"){
                          #####################
                          (wobei ein kleiner Pfeil auf das && zeigt)

                          Was ist jetzt schon wieder falsch?

                          Einen schönen Samstag noch!

                          --
                          Mein Lieblings-Browser:
                          Firefox 1.5
                          Mein Lieblings-Notepad:
                          Notepad 2
                          1. Hallo Daniel.

                            Was ist jetzt schon wieder falsch?

                            Du machst es dir unnötig schwer und verlierst die Übersicht.

                            function textaendern(name) {
                            if (document.getElementsByTagName("html")[0].id && document.getElementsByTagName("html")[0].id == "htm"){
                            document.getElementById(name).firstChild.nodeValue = 'volle Breite';
                            document.getElementById(name).href="javascript:anpassen('htm');aendern('b2');writeCookie('myCookie',document.getElementsByTagName('html')[0].id,24);"}
                            else if (document.getElementsByTagName("html")[0].id) && (document.getElementsByTagName("html")[0].id == "full"){ /* ← Was soll dies werden? Hier fehlt die kapselnde Klammer um beide Ausdrücke */
                            document.getElementById(name).firstChild.nodeValue = 'volle Breite';
                            document.getElementById(name).href="javascript:normalwidth('full');aendern('b2');writeCookie('myCookie',document.getElementsByTagName('html')[0].id,24);"
                            }}

                              
                            Hier einmal meine Version deiner Funktion:  
                              
                            ~~~javascript
                            function textaendern(ID) {  
                              
                              var Foo = { // Ein Objekt mit dem passend zur ID aufzurufenden Funktionsnamen  
                                'htm' : 'anpassen', // ID „htm“ → anpassen();  
                                'full' : 'normalwidth' // ID „full“ → normalwidth();  
                              }  
                              var obj = document.getElementById(ID); // Das Objekt mit der ID  
                              var html = document.documentElement; // Das HTML-Wurzelelement  
                              
                              // Wenn das Wurzelelement über eine ID verfügt und das Objekt existiert …  
                              if (html.id && obj) {  
                              
                                for (i in Foo) { // Das Objekt „Foo“ mit einer Schleife durchlaufen  
                              
                                  /* Wenn die ID des Wurzelelements mit dem Namen der Eigenschaft des  
                                     aktuellen Schleifendurchlaufes übereinstimmt …*/  
                                  if (html.id == i) {  
                              
                                    obj.firstChild.nodeValue = 'volle Breite'; // Textinhalt setzen  
                                    obj.onclick = function() { // onclick-Handler setzen  
                              
                                      /* Die an das window-Objekt gekoppelte Funktion aufrufen, deren  
                                         Name mit dem Wert der Eigenschaft des aktuellen Schleifen-  
                                         durchlaufes übereinstimmt */  
                                      window[Foo[i]](i); // Z. B.: window['anpassen']('htm');  
                                      aendern('b2');  
                                      writeCookie('myCookie', html.id, 24);  
                              
                                      return false; // Damit der Link nicht ausgeführt wird.  
                                    };  
                              
                                    break; // Trifft obige Bedingung zu, Schleife abbrechen  
                                  }  
                                }  
                              }  
                            }
                            

                            Einen schönen Samstag noch.

                            Gruß, Ashura

                            --
                            sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                            „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
                            [HTML Design Constraints: Logical Markup]
                            1. Hi,

                              Hier einmal meine Version deiner Funktion:

                              function textaendern(ID) {

                              var Foo = { // Ein Objekt mit dem passend zur ID aufzurufenden Funktionsnamen
                                  'htm' : 'anpassen', // ID „htm“ → anpassen();
                                  'full' : 'normalwidth' // ID „full“ → normalwidth();
                                }
                                var obj = document.getElementById(ID); // Das Objekt mit der ID
                                var html = document.documentElement; // Das HTML-Wurzelelement

                              // Wenn das Wurzelelement über eine ID verfügt und das Objekt existiert …
                                if (html.id && obj) {

                              for (i in Foo) { // Das Objekt „Foo“ mit einer Schleife durchlaufen

                              /* Wenn die ID des Wurzelelements mit dem Namen der Eigenschaft des
                                       aktuellen Schleifendurchlaufes übereinstimmt …*/
                                    if (html.id == i) {

                              obj.firstChild.nodeValue = 'volle Breite'; // Textinhalt setzen
                                      obj.onclick = function() { // onclick-Handler setzen

                              /* Die an das window-Objekt gekoppelte Funktion aufrufen, deren
                                           Name mit dem Wert der Eigenschaft des aktuellen Schleifen-
                                           durchlaufes übereinstimmt */
                                        windowFoo[i]; // Z. B.: window'anpassen';

                              Du schreibst hier "z.B.". Heißt das, ich soll hier etwas eintragen?

                              aendern('b2');
                                        writeCookie('myCookie', html.id, 24);

                              return false; // Damit der Link nicht ausgeführt wird.
                                      };

                              break; // Trifft obige Bedingung zu, Schleife abbrechen
                                    }
                                  }
                                }
                              }

                                
                              Danke erstmal für das Script. Aber leider geht's immer noch nicht. Wenn ich nach der Vergrößerung (dem HTML-Element also die ID "full" zuweise) auf den Button klicke, wird der Link ausgeführt. Der Buttontext lautet mal wieder "volle Breite", obwohl dies ja schon der Fall ist. Dort sollte doch "normalbreite" stehen. Der Nachteil an deiner Funktion ist, dass ich jetzt gar nicht mehr durchblicke. Bin halt noch nicht so gut in js. Die Meldung der js-Konsole lautet:  
                                
                              Fehler: document.getElementById(name) has no properties  
                              Quelldatei: file:///G:/aktuelles/Meine%20Webseite/test/test/test3/script3.js  
                              Zeile: 39  
                                
                              ...was ich überhaupt nicht verstehe. Das ist ja eine meiner Funktionen. Die Meldung kommt aber auch, wenn das Ganze funktioniert, weil ich noch nicht im Vollbild aktualisiert habe. Jedenfalls scheint die Funktion nicht zu funktionieren :-(. Ich weiß es nicht genau, aber wäre es vielleicht einfacher zu überprüfen, wie das Cookie heißt? (Nur so ein Vorschlag, weiß nicht wie's geht)  
                                
                              Einen schönen Sonntag noch!  
                              
                              -- 
                              Mein Lieblings-Browser:  
                              [Firefox 1.5](http://www.mozilla-europe.org/de/products/firefox/)  
                              Mein Lieblings-Notepad:  
                              [Notepad 2](http://www.flos-freeware.ch/notepad2.html)  
                              
                              
                              1. Hallo Daniel.

                                function textaendern(ID) {

                                // …
                                          windowFoo[i]; // Z. B.: window'anpassen';

                                
                                >   
                                > Du schreibst hier "z.B.". Heißt das, ich soll hier etwas eintragen?  
                                  
                                Nein. Ich habe hier eine mögliche Konstellation genannt. Dies hier wäre also äquivalent zu anpassen('htm').  
                                  
                                
                                > Danke erstmal für das Script. Aber leider geht's immer noch nicht. Wenn ich nach der Vergrößerung (dem HTML-Element also die ID "full" zuweise) auf den Button klicke, wird der Link ausgeführt.  
                                  
                                Was nur bei einem Syntaxfehler geschehen sollte.  
                                  
                                
                                > Der Buttontext lautet mal wieder "volle Breite", obwohl dies ja schon der Fall ist. Dort sollte doch "normalbreite" stehen.  
                                  
                                Ich habe lediglich die Angaben aus deinem Script übernommen; auch dort steht zweimalig „volle Breite“.  
                                  
                                
                                > Der Nachteil an deiner Funktion ist, dass ich jetzt gar nicht mehr durchblicke.  
                                  
                                Deshalb habe ich es ja auch kommentiert. Auch wenn du es jetzt noch nicht verstehen magst, kann sich dies ja mit der Zeit noch ändern.  
                                  
                                
                                > Die Meldung der js-Konsole lautet:  
                                >   
                                > Fehler: document.getElementById(name) has no properties  
                                > Quelldatei: file:///G:/aktuelles/Meine%20Webseite/test/test/test3/script3.js  
                                > Zeile: 39  
                                  
                                Wir sprechen also wieder über dein Script.  
                                  
                                Lasse dir in deinem Script einfach mal das referenzierte Objekt ausgeben:  
                                  
                                `alert(document.getElementById(name));`{:.language-javascript}  
                                  
                                Erscheint hier „null“, gibt es eben kein Element mit dieser ID.  
                                  
                                  
                                Einen schönen Sonntag noch.  
                                  
                                Gruß, Ashura  
                                
                                -- 
                                sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|  
                                „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“  
                                [[HTML Design Constraints: Logical Markup](http://www.w3.org/History/19921103-hypertext/hypertext/WWW/MarkUp/HTMLConstraints.html)]
                                
                                1. Hi,

                                  Der Buttontext lautet mal wieder "volle Breite", obwohl dies ja schon der Fall ist. Dort sollte doch "normalbreite" stehen.

                                  Ich habe lediglich die Angaben aus deinem Script übernommen; auch dort steht zweimalig „volle Breite“.

                                  *Die Hände an den Kopf klatschend* Tut mit Leid, dort sollte eigentlich "normalbreite" stehen.
                                  Meine Version des Scriptes sollte also eigentlich so aussehen:

                                  function textaendern(name) {  
                                  if (document.getElementsByTagName("html")[0].id) && (document.getElementsByTagName("html")[0].id == "htm"){  
                                  document.getElementById(name).firstChild.nodeValue = 'volle Breite';  
                                  document.getElementById(name).href="javascript:anpassen('htm');aendern('b2');writeCookie('myCookie',document.getElementsByTagName('html')[0].id,24);"}  
                                  else if (document.getElementsByTagName("html")[0].id) && (document.getElementsByTagName("html")[0].id == "full"){  
                                  document.getElementById(name).firstChild.nodeValue = 'normalbreite';  
                                  document.getElementById(name).href="javascript:normalwidth('full');aendern2('b2');writeCookie('myCookie',document.getElementsByTagName('html')[0].id,24);"  
                                  }}  
                                  
                                  

                                  Leider scheint sich dein script auf diese verdopplung spezialisiert zu haben, sodass ich das nicht mehr so einfach ändern kann. Auch der href war dem entsprechnd irgendwie falsch. Wie kann ich das nur wieder gutmachen *heul*. Leider funktioniert mein Script aber auch immer noch nicht dort hab ich immer noch nach Korrektur des Klammer-Fehlers, diesen Syntax-Error:

                                  Fehler: syntax error
                                  Quelldatei: file:///G:/aktuelles/Meine%20Webseite/test/test/test3/script2.js
                                  Zeile: 9, Spalte: 49
                                  Quelltext:
                                  if (document.getElementsByTagName("html")[0].id) && (document.getElementsByTagName("html")[0].id == "htm"){

                                  Dabie müsste der doch endlich richtig sein, oder?

                                  Der Nachteil an deiner Funktion ist, dass ich jetzt gar nicht mehr durchblicke.

                                  Deshalb habe ich es ja auch kommentiert. Auch wenn du es jetzt noch nicht verstehen magst, kann sich dies ja mit der Zeit noch ändern.

                                  Na gut, ich werde mich bemühen.

                                  [...]
                                  Lasse dir in deinem Script einfach mal das referenzierte Objekt ausgeben:

                                  alert(document.getElementById(name));

                                  Erscheint hier „null“, gibt es eben kein Element mit dieser ID.

                                  Gut, werde ich machen, wenn mein Script funktioniert. Das Problem hängt ja nicht unmittelbar damit zusammen, da es ja trotzdem funktioniert.

                                  Einen schönen Sonntag noch!

                                  --
                                  Mein Lieblings-Browser:
                                  Firefox 1.5
                                  Mein Lieblings-Notepad:
                                  Notepad 2
                                  1. Hallo Daniel.

                                    if (document.getElementsByTagName("html")[0].id) && (document.getElementsByTagName("html")[0].id == "htm"){

                                    Dabie müsste der doch endlich richtig sein, oder?

                                    Nein. Und warum dem so ist, hat Axel bereits geschrieben.

                                    Wenn du zwei Bedingungen verknüpfen willst, musst du sie in runde Klammern fassen. (Und natürlich den logischen UND-Operator verwenden, was du aber bereits tust.)

                                    Einen schönen Sonntag noch.

                                    Gruß, Ashura

                                    --
                                    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                                    „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
                                    [HTML Design Constraints: Logical Markup]
                                    1. Hi,

                                      if (document.getElementsByTagName("html")[0].id) && (document.getElementsByTagName("html")[0].id == "htm"){

                                      Dabei müsste der doch endlich richtig sein, oder?

                                      Nein. Und warum dem so ist, hat Axel bereits geschrieben.

                                      Wenn du zwei Bedingungen verknüpfen willst, musst du sie in runde Klammern fassen. (Und natürlich den logischen UND-Operator verwenden, was du aber bereits tust.)

                                      Sie sind doch in runden Klammern. Hier die gekürzte Version, bei der ich document.get... durch "dgEbID" ersetzt habe. Ich sehe eigentlich keinen Fehler...

                                        
                                      if (dgEbID("html")[0].id) && (dgEbID("html")[0].id == "htm")  
                                      
                                      

                                      Einen schönen Montag noch!

                                      --
                                      Mein Lieblings-Browser:
                                      Firefox 1.5
                                      Mein Lieblings-Notepad:
                                      Notepad 2
                                      1. Hallo Daniel.

                                        Wenn du zwei Bedingungen verknüpfen willst, musst du sie in runde Klammern fassen. (Und natürlich den logischen UND-Operator verwenden, was du aber bereits tust.)

                                        Sie sind doch in runden Klammern.

                                        Ja, aber nur jeweils, nicht zusammen.

                                        Hier die gekürzte Version, bei der ich document.get... durch "dgEbID" ersetzt habe. Ich sehe eigentlich keinen Fehler...

                                        if (dgEbID("html")[0].id) && (dgEbID("html")[0].id == "htm")

                                          
                                        Du hast hier ZWEI Ausdrücke, wobei nach der Syntaxregelung in JavaScript jedoch nur der erste gültig und der gesamte nachfolgende Code ungültig ist.  
                                          
                                        Klartext:  
                                          
                                           Anfang …             … und Ende der Abfrage  
                                           ↓                    ↓  
                                        if (dgEbID("html")[0].id) && (dgEbID("html")[0].id == "htm")  
                                                                  ↑  
                                                                  Fehler, da „{“ oder gültige Anweisung erwartet  
                                          
                                        Aussehen müsste es also wie folgt (ich mag nicht mehr mit Betonpfeilern winken):  
                                          
                                        if ((dgEbID("html")[0].id) && (dgEbID("html")[0].id == "htm"))  
                                           ↑                                                         ↑  
                                           Anfang …                                                  … und Ende der Abfrage  
                                          
                                          
                                          
                                        Einen schönen Montag noch.  
                                          
                                        Gruß, Ashura  
                                        
                                        -- 
                                        sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|  
                                        „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“  
                                        [[HTML Design Constraints: Logical Markup](http://www.w3.org/History/19921103-hypertext/hypertext/WWW/MarkUp/HTMLConstraints.html)]
                                        
                                        1. Hi,

                                          Vielen Dank an alle, die mich hier so tatkräftig unterstützt haben. Wahrscheinlich hätte es ohne eure Hilfe nicht geklappt. Allerdings habe ich den Fehler jetzt an einer anderen Stelle gefunden, nämlich hier:

                                          <body onload="textaendern('b2'); document.getElementById('htm').id=readCookie('myCookie');">

                                          Ich hatte es also so festgelegt, dass der Browser praktisch erst überprüft, wie die ID von HTML heißt, und dann das Cookie aktiviert. Kann also nicht funktionieren. Trotzdem hätte es wahrscheinlich ohne eure Korrekturen nicht funktioniert. Also noch mal ein herzliches Dankeschön an alle!

                                          Einen schönen Dienstag noch!

                                          --
                                          Mein Lieblings-Browser:
                                          Firefox 1.5
                                          Mein Lieblings-Notepad:
                                          Notepad 2
                                      2. Hallo,

                                        Sie sind doch in runden Klammern.

                                        ja, aber nicht in *einer gemeinsamen* Klammerebene!

                                        Hier die gekürzte Version, bei der ich document.get... durch "dgEbID" ersetzt habe. Ich sehe eigentlich keinen Fehler...

                                        Ich schon:

                                        if (dgEbID("html")[0].id) && (dgEbID("html")[0].id == "htm")

                                        if (     bedingung      ) anweisung;

                                        Siehst du's nicht? Der UND-Operator und die zweite Bedingung stehen eben *nicht mehr* in der if-Klammer, sondern da, wo eigentlich die Anweisung erwartet wird, die beim Zutreffen des Ausdrucks ausgeführt wird. Nur ist '&& (...)' natürlich keine gültige Anweisung.

                                        So long,
                                         Martin

                                        --
                                        Der Mensch denkt, Gott lenkt.
                                        Der Mensch dachte, Gott lachte.
                            2. Hallo,

                              Hier einmal meine Version deiner Funktion:

                              Danke, danke...

                              Meine obligatorische ;-) kleine Krittelei:

                              var Foo = { // Ein Objekt mit dem passend zur ID aufzurufenden Funktionsnamen
                                  'htm' : 'anpassen', // ID „htm“ → anpassen();
                                  'full' : 'normalwidth' // ID „full“ → normalwidth();
                                }

                              Hier würde ich nicht mit den Funktionsnamen arbeiten, sondern direkt mit Referenzen auf die Funktionen, also:

                              var modus_funktionen = {
                                 'htm' : anpassen,
                                 'full' : normalwidth
                              };

                              if (html.id && obj) {

                              for (i in Foo) { // Das Objekt „Foo“ mit einer Schleife durchlaufen

                              Das Durchlaufen ist eigentlich nicht nötig.

                              Über die Klammer-Notation kann man anhand von html.id auf den entsprechenden String zugreifen, der im Object gespeichert ist.

                              modus_funktionen[html.id] gibt schon die gesuchte Funktion zurück (oder in deiner Version den Funktionsnamen).

                              /* Wenn die ID des Wurzelelements mit dem Namen der Eigenschaft des
                                       aktuellen Schleifendurchlaufes übereinstimmt …*/
                                    if (html.id == i) {

                              if (modus_funktionen[html.id]) {

                              (Falls die Existenz denn noch zur Sicherheit überprüft werden muss, ansonsten fiele diese Abfrage mit der for-in-Schleife weg.)

                              /* Die an das window-Objekt gekoppelte Funktion aufrufen, deren
                                           Name mit dem Wert der Eigenschaft des aktuellen Schleifen-
                                           durchlaufes übereinstimmt */
                                        windowFoo[i]; // Z. B.: window'anpassen';

                              Wenn man nicht über den Funktionsnamen geht, reicht dann:

                              modus_funktionenhtml.id;

                              zum Aufrufen.

                              Mathias

                          2. Hallo,

                            ######################
                            Fehler: syntax error
                            Quelldatei: file:///G:/aktuelles/Meine%20Webseite/test/test/test3/script2.js
                            Zeile: 12, Spalte: 54
                            Quelltext:
                            else if (document.getElementsByTagName("html")[0].id) && (document.getElementsByTagName("html")[0].id == "full"){
                            #####################
                            (wobei ein kleiner Pfeil auf das && zeigt)

                            Was ist jetzt schon wieder falsch?

                            Beachte die öffnenden und schließenden Klammern. Sei 'document.getElementsByTagName("html")[0]'
                            blah, dann steht dort

                            else if (blah.id) && (blah.id == "full"){
                                            ^hier ist die if-Bedingungsklammer zu.

                            viele Grüße

                            Axel

                        2. Hallo Axel,

                          Was ist daran unklar? Eine JavaScriptanweisung, die mit && beginnt ist ein Syntaxfehler, weil && ein Operator ist, der nicht am Beginn einer Anweisung stehen darf, sondern nur zwischen zwei Werten.

                          das ist nur bedingt richtig. Die Fortsetzung einer Anweisung über mehrere Zeilen ist durchaus erlaubt und im Interesse der Lesbarkeit auch manchmal sinnvoll. Ich habe häufig Schreibweisen wie etwa

                          ~~~javascript if (bedingung1
                             && bedingung2
                             && bedingung3)
                             { anweisung;
                               anweisung;
                             }

                            
                          Und damit sind sowohl IE, als auch Firefox, als auch Opera finden das gut.  
                            
                          
                          > In JavaScript beginnt mit jeder neuen Zeile auch eine neue Anweisung.  
                            
                          Nein. Das gilt nur, wenn die vorangegangene Zeile syntaktisch vollständig ist. Das ist sie aber in meinem Code-Auszug nicht, die schließende Klammer des if-Ausdrucks fehlt nämlich noch.  
                          Ich vermute, D.R. hat die schließende Klammer am Ende der ersten Zeile stehenlassen und damit den Fehler provoziert, so etwa:  
                            ~~~javascript
                          if (bedingung1)  
                             && bedingung2)  
                             { anweisung;  
                               anweisung;  
                             }
                          

                          Das Semikolon als Anweisungsabschluss ist nicht notwendig, nur sinnvoll.

                          ACK.

                          Schönes Wochenende noch,
                           Martin

                          --
                          Ich wollt', ich wär ein Teppich. Dann könnte ich morgens liegenbleiben.
                          1. Hallo,

                            Was ist daran unklar? Eine JavaScriptanweisung, die mit && beginnt ist ein Syntaxfehler, weil && ein Operator ist, der nicht am Beginn einer Anweisung stehen darf, sondern nur zwischen zwei Werten.

                            das ist nur bedingt richtig.

                            Nein, das ist immer richtig ;-).

                            Die Fortsetzung einer Anweisung über mehrere Zeilen ist durchaus erlaubt

                            Das ist auch richtig ;-).

                            und im Interesse der Lesbarkeit auch manchmal sinnvoll.

                            Nein, aber das ist Ansichtssache, also je nach Ansicht richtig ;-).

                            In JavaScript beginnt mit jeder neuen Zeile auch eine neue Anweisung.
                            Nein. Das gilt nur, wenn die vorangegangene Zeile syntaktisch vollständig ist.

                            Das ist richtig ;-), das hatte ich verdrängt. Also ist _diese_ meine Aussage "nur bedingt richtig".

                            viele Grüße

                            Ax*richtig?*el