Finn: backgroundImage nur einmal ausführbar?

Guten abend,
ich rätsel jetzt schon seit Stunden an folgendem Problem und habe weder hier im Forum, noch sonstwo im Archiv Hilfe gefunden:

Ich kann via JS mein Hintergrundbild aus einer Funktion heraus nicht ändern. - das absurde ist, dass es beim ersten Mal funktioniert, danach aber nicht mehr.
Folgender Kontext ist gegeben: Das ganze ist ein Drag&Drop-System, die zu bewegenden Objekte sehen so aus:

<div onmousedown="activedrag= new Array;activedrag["id"]="42";activedrag["slot"]="4";activedrag["img"]="000";activedrag["info"]="";drag();" class="item" id="item42" style="position: inherit;">Aufschrift</div>

Der Container, auf dem das Objekt platziert werden soll wie folgt:

<div id="slot004" class="slot004" onmouseover="if(activedrag){activeslot='slot004';}" onmouseout="activeslot='';" onmousedown="dragaway('slot004','4');"></div>

die Funktion drag() funktioniert wunderbar, ruft beim droppen die Funktion drop() auf und setzt das Hintergrundbild von "slot004" auf activedrag["img"]+".png".
Bis hierhin funktioniert alles wunderbar; Nun kommt jedoch meine Funktion dragaway() ins Spiel, wenn ich "item42" wieder wegziehen möchte. Sie weist dem Array activedrag wieder die richtigen Werte zu, das hab ich schon mehr als einmal überprüft, setzt das hintergrundbild von "slot004" wieder auf das Standard zurück und führt die Funktion drag() wieder aus. Droppe ich "item42" jetzt allerdings wieder auf "slot004", ohne es zwischendurch einmal abgelegt zu haben, wird das Hintergrundbild nicht wieder geändert.
Nehme ich mir die aktuellen variablen und setze das Hintergrundbild manuell über die Konsole, funktioniert es.

Kann das daran liegen, dass vor dem zweiten Drop das Hintergrundbild mit dragaway() schon einmal geändert wurde? Außer dem Hintergrundwechsel wird alles normal weiter ausgeführt.

Danke im Vorraus

  1. Hi,

    Guten abend,
    ich rätsel jetzt schon seit Stunden an folgendem Problem und habe weder hier im Forum, noch sonstwo im Archiv Hilfe gefunden:

    onmousedown="activedrag= new Array;activedrag["

    Das ist Dein onmousedown.

    Das hier
    id"]="42";activedrag["slot"]="4";activedrag["img"]="000";activedrag["info"]="";drag();"
    hat an dieser Stelle im tag nichts zu suchen.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. onmousedown="activedrag= new Array;activedrag["

      Das ist Dein onmousedown.

      Hi Andreas,

      der Fehler ist mir beim Kürzen unterlaufen, richtig sieht das so aus:
      onmousedown='activedrag= new Array();activedrag["id"]="42";activedrag["slot"]="4";activedrag["img"]="000";activedrag["info"]="";drag();'

      wie gesagt - alles, bis auf den einen Befehl
      document.getElementById(activeslot).style.backgroundImage = "url("+activedrag['img']+".png)";
      wird alles korrekt ausgeführt; der Befehl jedoch wird einfach ignoriert; Ich kann das Element über dasselbe getElementById ansprechen und die Hintergrundfarbe ändern, nur das Hintergrundbild kann ich nicht ändern. Die URL vom Hintergrund wird dabei kein bischen verändert, das hab ich mit Firebug überwacht.

      Trotzdem danke für die Bemühungen und nochmals Entschuldigung für meinen Fehler

      Finn

  2. Das Thema hat sich erledigt, ich hatte einen Zeilenumbruch in dem String, als ich dragaway() aufgerufen hab. Den hab ich leider weder beim alert(), noch beim document.write gesehen.

    Finn