Knoten ersetzten wird nicht sofort ausgeführt
ThomasS
- javascript
0 Vinzenz Mai0 ChrisB0 ThomasS
Hallo,
ich möchte den Fortschritt eines Skripts auf einer HTML Seite ausgeben, aber das Skript läuft trotzdem durch ohne dass zwischendurch etwas angezeigt wird. Ich habe folggendes Beispiel gemacht:
----------
<html>
<head>
<title>Blinker</title>
<script type="text/javascript">
function blink_funktion() {
x=0;
for (var i=0; i<100; i++) {
document.getElementById("blinker").replaceChild(document.createTextNode("blink"),document.getElementById("blinker").firstChild);
for (var j=0; j<1000000; j++) {
x++;
}
document.getElementById("blinker").replaceChild(document.createTextNode(" "),document.getElementById("blinker").firstChild);
for (var j=0; j<1000000; j++) {
x++;
}
}
alert(x);
}
</script>
</head>
<body>
Test <span id="blinker">hier soll es blinken</span><br>
<a href="javascript:blink_funktion()">und los</a>
</body>
</html>
----------
Warum blinkt es nicht?
Über Antworten würde ich mich freuen. Bedanke mich schonmal.
Gruß ThomasS
Hallo Thomas,
ich möchte den Fortschritt eines Skripts auf einer HTML Seite ausgeben,
ich glaube, der Artikel Komfortable Timer-Funktion von molily und Struppi kann Dir helfen.
Freundliche Grüße
Vinzenz
Hi,
ich möchte den Fortschritt eines Skripts auf einer HTML Seite ausgeben, aber das Skript läuft trotzdem durch ohne dass zwischendurch etwas angezeigt wird.
Warum blinkt es nicht?
Weil deine for-Schleife durchläuft, ohne dass die Kontrolle an die Rendering-Engine des Browsers zurück gegeben wird.
Wenn du willst, dass Änderungen am DOM umgesetzt werden, dann musst du den JavaScript-Ablauf unterbrechen - z.B., in dem du die Schleife durch Zeitintervalle (setTimeout/setInterval) ersetzt, so dass das Script stückchenweise abgearbeitet wird, und zwischendurch JavaScript die Rendering-Engine wieder ihren Job machen lässt.
MfG ChrisB
Danke für die Antworten!