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]