Hi,
ich habe eine Reihe Bilder auf einer Seite, und möchte beim Mouseover Zusatzinformationen zu den Bildern laden. Das ganze funktioniert schon soweit, nur eine Kleinigkeit fehlt noch. Und zwar möchte ich dem Benutzer eine kleine Rückmeldung geben, wenn die Daten gerade geladen werden, damit er weiß was gerade passiert (á la Sanduhr in Windows).
Hier mal ganz vereinfacht der aufbau:
Die Funktion wird beim mouseover-Event ausgeführt. Zunächst soll ein DIV sichtbar gemacht werden, danach soll in dieses DIV "loading ..." geschrieben werden. Dann passiert eine Zeit lang etwas, und dann soll im DIV was anderes stehen (in diesem Beispiel "done", im Original die eigentliche Ausgabe).
Leider kommt es nicht zum gewünschten Effekt, sondern es wird lediglich nach ca. 1 Sekunde (siehe sleep) der endgültige Text "done" ausgeben. Das "loading" erscheint zwischendrin nicht. Wenn ich den letzten Befehl dann auskommentiere, dauert es auch wieder ca. 1 Sekunde und das "loading ... " erscheint. Aber eben erst nach der restlichen Verarbeitung.
Das ganze macht auf mich den Eindruck, als würde die innerHTML-Änderungen erst an das Element gegeben werden, wenn die Funktion abgeschlossen ist, und nicht direkt bei der Zuweisung.
Nun natürlich die Frage: wie mache ich sowas "richtig"?
ich habe eine Reihe Bilder auf einer Seite, und möchte beim Mouseover Zusatzinformationen zu den Bildern laden. Das ganze funktioniert schon soweit, nur eine Kleinigkeit fehlt noch. Und zwar möchte ich dem Benutzer eine kleine Rückmeldung geben, wenn die Daten gerade geladen werden, damit er weiß was gerade passiert (á la Sanduhr in Windows).
Hier mal ganz vereinfacht der aufbau:
PHP-Code:
function on(itemid){
document.getElementById('item_tooltip').style.visibility = 'visible';
document.getElementById('item_tooltip').innerHTML = 'loading ...';
// zum Testen habe ich hier eine sleep-Funktion eingebaut,
// im Original werden hier die Daten geladen
sleep(1000);
document.getElementById('item_tooltip').innerHTML = 'done';
}
Leider kommt es nicht zum gewünschten Effekt, sondern es wird lediglich nach ca. 1 Sekunde (siehe sleep) der endgültige Text "done" ausgeben. Das "loading" erscheint zwischendrin nicht. Wenn ich den letzten Befehl dann auskommentiere, dauert es auch wieder ca. 1 Sekunde und das "loading ... " erscheint. Aber eben erst nach der restlichen Verarbeitung.
Das ganze macht auf mich den Eindruck, als würde die innerHTML-Änderungen erst an das Element gegeben werden, wenn die Funktion abgeschlossen ist, und nicht direkt bei der Zuweisung.
Nun natürlich die Frage: wie mache ich sowas "richtig"?
Kommentar