WildStyle: Hintergrundbild per Javascript ändern lassen

Hallo...

Ich habe folgendes Problem:
Ich möchte per JavaScript dynamisch das Hintergrundbild einer Zelle verändern lassen. Die ganze Geschichte funktioniert im Mozilla einwandfrei aber im IE nicht. Folgender Code soll die Darstellung regeln.

function SetColor(farbe)
{ var farbe;
document.getElementsByName("wk_produkt_color").item(0).value;
<!--document.getElementById("ProduktColor_front").getAttribute("style");-->
document.getElementById("ProduktColor_front").setAttribute("style","background-image:url(Produkt/"+farbe+".png)");
};

Die Zelle, in der das Hintergrundbild verändert werden soll sieht wie folgt aus...

<td width="320" height="450" align="center" id="ProduktColor_front" style="background-image:url(Produkt/black_front.png);background-repeat:no-repeat"></td>

Die Funktion wird wie folgt im Formular so aufgerufen:
...
<select name="wk_produkt_color" onChange="SetColor(value)">
...

Hab selber schon viel gelesen und rumprobiert aber noch keine Lösung für beide Browser gefunden...
Hoffe es kann mir hier jemand helfen...

  1. Hi,

    der IE verhält sich mit setAttribute etwas merkwürdig.
    Greife am Besten direkt auf das Style-Objekt durch.

    MfG
    Rouven

    --
    -------------------
    There's no such thing as a free lunch  --  Milton Friedman
    1. Habe jetzt den Code wie folgt verändert.

      document.all.ProduktColor_front.style.setAttribute("style","background-image:url(Produkt/"+sex+"_front.png)");

      Doch leider funktioniert auch dieses nur im Mozilla...

      1. Hello out there!

        document.all.ProduktColor_front.style.setAttribute("style","background-image:url(Produkt/"+sex+"_front.png)");
        Doch leider funktioniert auch dieses nur im Mozilla...

        Du solltest auch nicht 'setAttribute' verwenden, sondern die Style-Eigenschaften.

        Und auch nicht 'document.all.ProduktColor_front', sondern 'document.getElementById("ProduktColor_front")'.

        See ya up the road,
        Gunnar

        --
        “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
  2. Hello out there!

    function SetColor(farbe)
    { var farbe;
    document.getElementsByName("wk_produkt_color").item(0).value;
    <!--document.getElementById("ProduktColor_front").getAttribute("style");-->

    Was sucht ein HTML-Kommentar im JavaScript??

    <td width="320" height="450" align="center"

    Du benutzt doch CSS; warum dann auch noch missbilligte HTML-Attribute?

    See ya up the road,
    Gunnar

    --
    “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
    1. Hello out there!

      function SetColor(farbe)
      { var farbe;
      document.getElementsByName("wk_produkt_color").item(0).value;
      <!--document.getElementById("ProduktColor_front").getAttribute("style");-->

      Was sucht ein HTML-Kommentar im JavaScript??

      <td width="320" height="450" align="center"

      Du benutzt doch CSS; warum dann auch noch missbilligte HTML-Attribute?

      See ya up the road,
      Gunnar

      Ja Danke für den Hinweis...Die HTML-Attribute werden natürlich in CSS umgesetzt...Und der Kommentar ist natürlich blödsinn und wurde sofort entfernt :)
      Da bleibt aber trotzdem noch mein Problem mit den Hintergrundbildern...

  3. Hallo WildStyle

    document.getElementById("ProduktColor_front").setAttribute("style","background-image:url(Produkt/"+farbe+".png)");

    Hast du die Zeile mal so, wie von Gunnar vorgeschlagen proboiert?

    document.getElementById("ProduktColor_front").style.backgroundImage="url(Produkt/"+farbe+".png)";

    Auf Wiederlesen
    Detlef

    --
    - Wissen ist gut
    - Können ist besser
    - aber das Beste und Interessanteste ist der Weg dahin!
    1. Hallo,

      Hast du die Zeile mal so, wie von Gunnar vorgeschlagen proboiert?

      document.getElementById("ProduktColor_front").style.backgroundImage="url(Produkt/"+farbe+".png)";

      wenn er dann die Variable 'farbe' auch noch initialisiert, anstatt sie nur zu deklarieren:

      { var farbe;
      document.getElementsByName("wk_produkt_color").item(0).value;

      Zur Verdeutlichung für weniger Versierte:
       * Lege eine neue Variable 'farbe' an, weise ihr keinen Wert zu.
       * Lies die value-Eigenschaft des ersten Eintrags im select-Element mit
         dem Namen "wk_produkt_color" und vergiss sie sofort wieder.
      Kombiniert würden diese beiden Zeilen ja einen Sinn ergeben - auch wenn da noch ein Problem drinsteckt: Falls es mehrere Elemente desselben Namens gibt, liefert getElementsByName() nicht ein einzelnes Element, sondern eine ganze Collection, die noch indiziert sein will. Solange es wirklich nur ein Element mit diesem Namen gibt, ist die Formulierung okay.

      Schönen Abend noch,
       Martin

      --
      Zwischen Leber und Milz
      passt immer noch'n Pils.
    2. Hallo WildStyle

      document.getElementById("ProduktColor_front").setAttribute("style","background-image:url(Produkt/"+farbe+".png)");

      Hast du die Zeile mal so, wie von Gunnar vorgeschlagen proboiert?

      document.getElementById("ProduktColor_front").style.backgroundImage="url(Produkt/"+farbe+".png)";

      Auf Wiederlesen
      Detlef

      Habe die ganze Sache jetzt mal so umgeschrieben und bin wirklich froh, dass das jetzt funktioniert...
      Möchte mich bei allen Helfern bedanken und wünschen einen schönen Tag

      Man liest sich
      Gruss WildStyle