Horst Scheibenhofer: Variablen Inhalt zu Attributname

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

  1. 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

    1. 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

      1. 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

    2. 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

  2. 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.

    1. 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

    2. 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

      --
      Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!