0 votes
in SoSci Survey (dt.) by s222991 (110 points)
edited by s222991

Liebes SoSci Survey Support Team,

mithilfe der Anleitung habe ich (erfolgreich) einen Timer in meine Umfrage integriert. Die Probanden erhalten 150 Sekunden zur Bearbeitung einer Aufgabe, bevor Sie automatisch zur nächsten Seite weitergeleitet werden.

Leider zählt der Timer nicht kontinuierlich herunter sondern springt abwechselnd zwischen 2 und 3-Sekundenschritten.

Gibt es einen offensichtlichen Fehler in meinem Code, der das Problem hervorruft?

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 = 60; // Der Teilnehmer hat 1 Minute (60 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);


<!--

// Funktion zur Weiterleitung
function weiter() {
// Eine Meldung anzeigen (optional)
alert("Die Bearbeitungszeit ist abgelaufen. Ihre Einträge wurden erfolgreich gespeichert! Bitte klicken Sie auch 'Schließen‘ um zur nächsten Seite zu gelangen.");
// Den Teilnehmer zur nächsten Seite weiterleiten
SoSciTools.submitPage();
}

/// Countdown anzeigen
var date0 = new Date();
var timeout = date0.getTime() + %remain% * 2500;
function updateCountdown() {
// Zeit berechnen
var date = new Date();
var time = Math.ceil((timeout - date.getTime() - 50) / 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 / 60);
var seconds = String(time - 60 * minutes);
if (seconds.length < 1) 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, 2500);
updateCountdown();
// Timer für automatische Weiterleitung starten
window.setTimeout(weiter, %remain% * 2500);
});

// -->

Pretest-Link zur betreffenden Seite: https://www.soscisurvey.de/recovery2022/?act=aVmkMd64dTjt3W6em3oLAoaK

Über einen Tipp würde ich mich sehr freuen.

Vielen Dank bereits im Voraus!

1 Answer

0 votes
by SoSci Survey (304k points)

Leider zählt der Timer nicht kontinuierlich herunter sondern springt abwechselnd zwischen 2 und 3-Sekundenschritten.

Das liegt an dieser Zeile:

window.setInterval(updateCountdown, 2500);

Ich bin ziemlich sicher, dass diese so nicht in der Anleitung steht ;)

Bitte lesen Sie mal nach, was es mit window.setInterval() auf sich hat, und wofür die beiden Parameter stehen. Dann wird es klarer, denke ich.

by s222991 (110 points)
Vielen herzlichen Dank für die hilfreiche Antwort-jetzt funktioniert alles wie gewünscht!

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...