Ashura: if-operatoren...bräuchte Hilfe

Beitrag lesen

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]