awa: Frage zur Adressierung von images mit document.images[].src

Hallo zusammen,

ich habe ein ziemlich hartnäckiges, vielleicht auch ein wenig widersinniges Problem. Folgend zuerst der Code:

  function scrollto (dotid) {
    if ( arbeiten_scrollable ) {
      arbeiten_scrollable = false;
      for (i=1; i<=AnzahlArbeiten; i++) {
        document.images["dot_"+i].src = "Bilder/contentdot_off.png";
      }
      //alert("dot_"+dotid);
      document.images["dot_"+dotid].src = "Bilder/contentdot_on.png";
      block_arbeiten_derzeit = document.getElementById("block_arbeiten").scrollLeft;
      block_arbeiten_scrollto = arbeiten_scrollToX[dotid-1]  * myWidth/1440;
      if( block_arbeiten_derzeit < block_arbeiten_scrollto ) {
        displace = 1;
        gothere = window.setInterval (scrolltonewpos, 20);
      }
      if( block_arbeiten_derzeit > block_arbeiten_scrollto ) {
        displace = -1;
        gothere = window.setInterval (scrolltonewpos, 20);
      }
    }
  }

Zusammenhang: im HTML-Teil der Seite sind 14 Punkte (Bilddateien, jpgs) mittels <a...> und <img ...> als links gesetzt. Namen der imgs sind "dot_1" bis "dot_14". Der Aufruf der js-Funktion funktioniert wunderbar. Beim Aufruf der Funktion ist einer der Punkte dunkler (mittels anderer Bilddatei), weil aktiv. 'dotid' übergibt die Nummer des Punktes (1-14), der angeclickt wurde. Mit der for-Schleife lade ich für alle 14 Bilder die Punkte in der Darstellung "ausgeschaltet". Das funktioniert prima (und man kann es sicher eleganter lösen). Will ich danach mittels document.images["dot_"+dotid].src = "Bilder/contentdot_on.png"; einen der Punkte wieder mit der Bilddatei im Zustand "eingeschaltet" überladen, funktioniert das nicht, das Kommando bleibt ohne Ergebnis. Erst wenn ich die hier auskommentierte Zeile mit dem alert-Befehl einfüge (alert("dot_"+dotid);), komme ich zum gewünschten Ergebnis, die neu zu ladenende Bilddatei wird sichtbar... !! Nehme ich die alert-Zeile wieder raus, bleibt das Kommando wie schon zuvor ergebnislos...

(ich habe dann noch versucht, eine Variable mit dem Wert "dot_"+dotid zu deklarieren und mittels .toString definitiv und für alle Fälle in einen String zu konvertierten - was natürlich keinen Sinn macht, aber auch nicht hilft...

So bin ich ratlos und wäre für Hilfe sehr dankbar!

Viele Grüße, awa

  1. Tach!

    Mit der for-Schleife lade ich für alle 14 Bilder die Punkte in der Darstellung "ausgeschaltet". Das funktioniert prima (und man kann es sicher eleganter lösen). Will ich danach mittels document.images["dot_"+dotid].src = "Bilder/contentdot_on.png"; einen der Punkte wieder mit der Bilddatei im Zustand "eingeschaltet" überladen, funktioniert das nicht, das Kommando bleibt ohne Ergebnis. Erst wenn ich die hier auskommentierte Zeile mit dem alert-Befehl einfüge (alert("dot_"+dotid);), komme ich zum gewünschten Ergebnis, die neu zu ladenende Bilddatei wird sichtbar... !

    Das sieht mir nach einem Asynchron-Problem aus. Die Bilder werden nicht sofort geladen, sondern der Code rennt weiter, und im Hintergrund wird die Bilddatei geladen und gesetzt. Das Überschreiben will dann nicht, weil es sich mit dem vorherigen Setzen behakelt. Aber warum setzt du überhaupt erst alle auf off? Der mit der dotid kann doch gleich richtig gesetzt werden.

    dedlfix.