Hallo,
ich möchte gern einen Countdown einstellen, der von 45 Sekunden rückwärts runterzählt. Aktuell beginnt er jedoch bei einer Minute und springt dann auf 44 Sekunden. Ich finde den Fehler leider nicht. Kann mir jemand helfen?
der PHP-Code lautet:
if (!isset($time0)) {
$time0 = time();
registerVariable($time0); // Die Variable $time0 auch nach Ende des PHP-Codes aufbewahren
}
// Prüfung, ob die Zeit schon abgelaufen ist
// (z.B. weil der Teilnehmer die Seite neu geladen hat)
$timer = 45; // Der Teilnehmer hat 45 Sekunden (45 Sekunden) Zeit zur Bearbeitung
if (time() >= $time0 + $timer) {
goToPage('next');
}
// Die verbleibende Zeit muss auch dem JavaScript-Code bekannt gemacht werden
$remain = $time0 + $timer - time();
replace('%remain%', $remain);
Dann kommt ein Textbaustein mit dem HTML-Code:
<script type="text/javascript">
<!--
// Funktion zur Weiterleitung
function weiter() {
// Eine Meldung anzeigen (optional)
alert("Die Zeit ist vorbei.");
// Den Teilnehmer zur nächsten Seite weiterleiten
SoSciTools.submitPage();
}
// Weiter-Knopf ausblenden (optional)
SoSciTools.submitButtonsHide();
// Initialisierung der Weiterleitung
SoSciTools.attachEvent(window, "load", function(evt) {
// Timer für automatische Weiterleitung starten
window.setTimeout(weiter, %remain% * 1000);
});
// -->
</script>
Dann ein HTML-Code:
<p>Verbleibende Zeit: <span id="remain"></span></p>
und zu guter Letzt der HTML-Code:
<script type="text/javascript">
<!--
// Funktion zur Weiterleitung
function weiter() {
// Eine Meldung anzeigen (optional)
alert("Die Zeit ist vorbei.");
// Den Teilnehmer zur nächsten Seite weiterleiten
SoSciTools.submitPage();
}
// Countdown anzeigen
var date0 = new Date();
var timeout = date0.getTime() + %remain% * 1000;
function updateCountdown() {
// Zeit berechnen
var date = new Date();
var time = Math.ceil((timeout - date.getTime() - 45) / 1000); // Verbleibende Zeit in Sekunden
// Zeit anzeigen
var out = document.getElementById("remain");
if (!out) {
return;
}
while (out.lastChild) {
out.removeChild(out.lastChild);
}
var minutes = Math.floor(time / 45);
var seconds = String(time - 45 * minutes);
if (seconds.length < 2) seconds = "0" + seconds;
var display = String(minutes) + ":" + seconds;
var displayNode = document.createTextNode(display);
out.appendChild(displayNode);
}
// Weiter-Knopf ausblenden (optional)
SoSciTools.submitButtonsHide();
// Initialisierung der Weiterleitung
SoSciTools.attachEvent(window, "load", function(evt) {
// Zusätzlicher Timer für die Aktualisierung des Countdowns
window.setInterval(updateCountdown, 1000);
updateCountdown();
// Timer für automatische Weiterleitung starten
window.setTimeout(weiter, %remain% * 1000);
});
// -->
</script>