Hallo mabuhay,
Ich möchte in einer Seite das Hintergrundbild ändern. Dies ist in einer Tabelle aufgeteilt.
Eine Seite hat einen <body>-Tag, der kann ein Hintergrundbild haben (z.B. per CSS gesetzt). Plötzlich redest du von Tabellen. Vormuliere dich deutlich :)
Dies funktioniert auch, sind die Bilder aber nicht im Browser cache werden sie entweder sehr langsam, oder erst nach ein paar mal Seite neu laden angezeigt.
selbstverständlich, sie werden ja auch erst runtergeladen, wenn die Funktion aufgerufen wird (was scheinbar erst nach einer Benutzeraktion passiert).
[...] hier wird jeweils mit my_image = new Image(); die neue Instanz erzeugt und anschliessend mit my_image.scr der Pfad zugewiesen.
und genau dann fängt er an zu Laden, jep.
Ich brauche aber bei der Hintergrundgrafik als Pfad backgroundImage = "url(...". Kann ich meine Funktion dann einfach wie folgt abändern? was bewirkt new Image() genau?
new_image = new Image();
new_image.src = "url(/naeff/" + HomePageName + "/" + ActiveSection + "/image/main_0" + x + ".jpg)";
document.getElementById("image_" + x).style.backgroundImage = new_image.src;
Nein! Das eine sind Bild-Objekte, das andere ist CSS und dessen Eigenschaft Hintergrundbilder. Letztere kannst du nicht "initialisieren".
Zumindest nicht wirklich. Einen kleinen Trick könnte ich mir allerdings vorstellen: Du initialisierst ein Image-Objekt (wie du das bereits gemacht hast), dann wird das Bild runtergeladen. Jedoch benutzt du es nirgends, sondern setzt das Hintergrundbild später per CSS. Wenn der Browser seinen Cache benutzt, hat er das Bild nun schon runtergeladen und das Laden geht erheblich schneller (aber immernoch langsamer als die Methode, wie sie in SELFHTML steht, weil er erst nochmal beim Server vorbeischaut, ob sich das Bild geändert hat).
Wenn du also die Geschwindigkeit brauchst, geht nichts dran vorbei - du musst das Bild als <img> einbinden.
Grüße,
Sven