DanOne: + PHP Bilder dynamisch preloaden

Guten Morgen an alle,

ich habe hier ein merkwürdiges Problem mit dem IE das ich mir nicht erklären kann, daher versuche ich einmal es zu schildern:

Also ich erzeuge dynamisch Buttons deren Werte (bezeichnung, bild etc) aus einer Datenbank kommen, auf der Seite selber haben diese Buttons einen onmouseover effekt. Um diesen zu realisieren gibt es zu jedem button einen kurzen JS block (im body nicht im head) um das Bild vorzuladen:

<script language='JavaScript' type='text/JavaScript'>";
  var image_col<?=$a?> = new Image();
  image_col<?=$a?>.src='content/subMenu_pix/<?=$img?>col.gif';
  var image_bw<?=$a?> = new Image();
  image_bw<?=$a?>.src='content/subMenu_pix/<?=img?>bw.gif';
</script>\r";

wobei $a der zähler einer for schleife ist und $img das jeweilige image zu dem Button.

in dem relevaten HTML Teil steht dann an der stelle wo das Bild eingebunden wird:

<img src='content/subMenu_pix/<?=$img?>bw.gif' name='image<?=$a?>' onMouseover='swap(image<?=a?>, image_col<?$a?>);return true;' onMouseout='swap(image<?=$a?>, image_bw<?=$a?>);return true;' border='0' alt=''>

die aufgerufene funktion swap() sieht folgendermaßen aus:

function swap(img,imgsrc)
{
  img.src=imgsrc.src;
}

So und jetzt das Problem, das klappt überall (Moz,NS,Opera) nur in keinem IE.
Beim IE sind einige Bilder vorgeladen und der mouseover klappt wie erwünscht andere (auf der selben seite) sind es nicht und er lädt sie erst beim mouseover (gut zu erkennen da der effekt etwas träge wirkt und die lustige fahne oben rechts kurz flattert).
Meine Frage ist einfach: ist da irgendwo ein Fehler drin oder warum kann der IE das nicht? (Bitte ne andere Antwort als: Weil er von MS ist) Ich würde das echt gerne hinkriegen aber ich bin da mit meinem Latein am ende.

Vielen dank für alle konstruktiven vor- bzw ratschläge und einen schönen weiteren Tag

.DanOne.

  1. Guten Morgen an alle,

    ich habe hier ein merkwürdiges Problem mit dem IE das ich mir nicht erklären kann, daher versuche ich einmal es zu schildern:

    Also ich erzeuge dynamisch Buttons deren Werte (bezeichnung, bild etc) aus einer Datenbank kommen, auf der Seite selber haben diese Buttons einen onmouseover effekt. Um diesen zu realisieren gibt es zu jedem button einen kurzen JS block (im body nicht im head) um das Bild vorzuladen:

    <script language='JavaScript' type='text/JavaScript'>";
      var image_col<?=$a?> = new Image();
      image_col<?=$a?>.src='content/subMenu_pix/<?=$img?>col.gif';
      var image_bw<?=$a?> = new Image();
      image_bw<?=$a?>.src='content/subMenu_pix/<?=img?>bw.gif';
    </script>\r";

    Ich hab keine ahnung von PHP und weiss daher nicht was bei diesem Kauderwelsch beim Browser ankommt. Das wäre nämlich interessant zu Wissen.

    Allerdings würde ich dein Problem auch ganz anders lösen, so dass du gar nicht so vermurksten Code schreiben mußt:

    <script type='text/JavaScript'>"
    var image_col = new Array();
    var image_bw = new Array();
    var anzahl = <? echo $a ?>;

    for(var i = 0; i < anzahl;i++)
    {
    image_col[i] = new Image();
    image_col[i].src = 'content/subMenu_pix/' + i + 'col.gif';
    image_bw[i] = new Image();
    image_bw[i].src = 'content/subMenu_pix/' + i + 'bw.gif';
    }

    </script>

    <img src='content/subMenu_pix/<?=$img?>bw.gif' name='image<?=$a?>' onMouseover='swap(image<?=a?>, image_col<?$a?>);return true;' onMouseout='swap(image<?=$a?>, image_bw<?=$a?>);return true;' border='0' alt=''>

    Warum machst du dir das Leben so schwer?

    benutze hier einfach this beim Aufruf von onmouseover, dann kannst du in deiner Funktion leichter (und vor allem richtig, weil das obige Fuktioniert nur im IE da du auf window[bildName] zu greifst das existiert aber nicht, richitg heißt es window.document[bildName] ) auf die Bildeigenschaften zugreifen. wenn du dann noch den Namen benutzt um deine Referenz auf die vorgeladenen Bilder zu bekommen, wird dein Quellcode schon mal übersichtlicher

    <img src='content/subMenu_pix/<?=$img?>bw.gif' name='image<?=$a?>'
    onMouseover='swap_col(this);'
    onMouseout='swap_bw(this);'  border='0' alt=''>

    function swap_col(img)
    {
        img.src = image_col[ img.name.substring(5) ].src;
    }

    function swap_bw(img)
    {
        img.src = image_bw[ img.name.substring(5) ].src;
    }

    Den Rest deiner Schilderung (das mit der Flage) hab ich nicht verstanden.

    Struppi.