Variablen Inhalt zu Attributname
Horst Scheibenhofer
- javascript
Hallo!
Ich möchte folgendes realisieren:
function setStyle(element,strStyle,strValue){
element.style.strSyle=strValue;
}
Ich denke, ihr seht das Problem. strStyle muss irgendwie umgesetzt werden, damit der Inhalt von strStyle als Attributname für das Style Objekt genommen wird.
Da ich keine Ahnung habe wie man sowas bezeichnet, kann ich auch nicht vernünftig nach einer Problemlösung suchen.
element.style.setAttribute(strStyle,strValue) funktioniert im Firefox leider nicht. Ich bekomme die Fehlermeldung "setAttribute is not a function".
Danke
Horst
Hallo,
Ich möchte folgendes realisieren:
function setStyle(element,strStyle,strValue){
element.style.strSyle=strValue;
element.style[strStyle] = strValue;
oder
element.style.[link:http://de.selfhtml.org/javascript/objekte/style.htm#set_attribute@title=setAttribute](strStyle, strValue);
oder
element.style.[link:http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-setProperty@title=setProperty](strStyle, strValue, '');
Wobei die mittlere Methode wohl am breitesten funktioniert.
Mathias
element.style[strStyle] = strValue;
oder
element.style.[link:http://de.selfhtml.org/javascript/objekte/style.htm#set_attribute@title=setAttribute](strStyle, strValue);
oder
element.style.[link:http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-setProperty@title=setProperty](strStyle, strValue, '');
Wobei die mittlere Methode wohl am breitesten funktioniert.
Method 1 funktioniert bei meinem Mozilla, Firefox und IE.
Bei 2 und 3 sagt mein Firefox: "setAttribute is not a function"
Danke für die Hilfe!
Horst
Hallo,
Wobei die mittlere Methode wohl am breitesten funktioniert.
Method 1 funktioniert bei meinem Mozilla, Firefox und IE.
Ups, Du hast natürlich recht, ich habe mich von den Angaben in SELFHTML fehlleiten lassen. Firefox versteht Methode 1 und 3.
Bei 2 und 3 sagt mein Firefox: "setAttribute is not a function"
Methode 3 sollte Firefox aber unterstützen, macht er zumindest in meinen Tests (Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.8) Gecko/20050518 Firefox/1.0.4).
Mathias
Hallo,
element.style.[link:http://de.selfhtml.org/javascript/objekte/style.htm#set_attribute@title=setAttribute](strStyle, strValue);
läuft unter win -nicht auf dem opera 5/6 ansonsten geht das
erfolgreich getestet ab O 7.01 / ab NS 6/ FX / ab IE 5 --> erfolgreich
Hallo!
Ich möchte folgendes realisieren:
function setStyle(element,strStyle,strValue){
element.style.strSyle=strValue;
}
eval() ist zwar verpönt hilft hier aber:
function setStyle(element,strStyle,strValue){
eval(element+"."+strStyle+"="+strValue);
}
Zuvor kannst Du ja auch Umsetzungen üben.
Zum Beispiel z-index -> zIndex.
(Ein "-" in strStyle suchen, rausoperieren und den nachfolgenden Buchstaben durch seinen großen Bruder ersetzen.) Dir hilft dabei sicherlich, dass JS Strings als Arrays aus Zeichen behandelt.
Hallo,
eval() ist zwar verpönt hilft hier aber:
eval ist nicht »verpönt«, eval ist hier, wie auch bei nahezu allen anderen Anwendungen, schlichtweg überflüssig.
function setStyle(element,strStyle,strValue){
eval(element+"."+strStyle+"="+strValue);
Der Inhalt von strValue muss in Anführungszeichen eingeschlossen werden, also ... + " = '" + strValue + "'", wenn ich mich nicht täusche.
Zuvor kannst Du ja auch Umsetzungen üben.
Zum Beispiel z-index -> zIndex.
Guter Tipp.
Bei Benutzung von setProperty und setAttribute fiele das weg.
Mathias
Hi,
eval() ist zwar verpönt hilft hier aber:
IIRC ist das mittlerweile sogar "deprecated". =:-)
Wie molily bereits erwähnte, ist also
element.style[strStyle] = strValue;
nicht nur die einzige browserübergreifende *und* zukunftssichere Methode. ;-)
(Ein "-" in strStyle suchen, rausoperieren und den nachfolgenden Buchstaben durch seinen großen Bruder ersetzen.)
Z.B.:
// Syntax von CSS- auf Script-Schreibweise aendern
if(attrib.indexOf("-")>=0) {
// CSS-Syntax am "-" auftrennen, ...
syntax=attrib.split("-");
// ... ersten Teil uebernehmen und ...
attrib=syntax[0];
// ... folgende Teile mit grossem Anfangsbuchstaben
for(i=1; i<syntax.length; i++) { attrib+=syntax[i].charAt(0).toUpperCase()+syntax[i].substring(1); }
}
Gruß, Cybaer