Sempervivum
Erfahrenes Mitglied
Mit requestAnimationFrame könnte es so aussehen:
Code:
<!DOCTYPE html>
<html>
<body>
<input type="button" id="start" value="start">
<div id="clock"></div>
<canvas id="canvas" width="500" height="600"></canvas>
<script>
var x = 50, y = 50, w = 200, h = 10;
var total = 4000;
var vstart;
var canv = document.getElementById("canvas");
var ctx = canv.getContext("2d");
function doIt() {
// die vergangene Zeit;
var gone = Date.now() - vstart;
document.getElementById('clock').innerHTML = gone + ' Millisekunden';
// die verbleibende Zeit
var remaining = total - gone;
// die Breite des Balkens
var ist = remaining / total * w;
// Progressbar zeichnen
ctx.fillStyle = "lightblue";
ctx.strokeStyle = "black";
ctx.strokeWidth = 2;
ctx.clearRect(x, y, w, h);
ctx.strokeRect(x, y, w, h);
ctx.fillRect(x, y, ist, h);
// wenn die verbleibende Zeit groesser als 0 ist,
// erneuten Aufruf der Funktion doIt veranlassen
if (remaining > 0) requestAnimationFrame(doIt);
}
lo = document.getElementById('start');
lo.addEventListener('click', function () {
vstart = Date.now();
doIt();
});
</script>
</body>
</html>