0 votes
in FAQs by s141428 (110 points)
edited by SoSci Survey

Ich versuche gerade einen Timer über mehrere Seiten zu erstellen. Ich habe mich an die Hilfestellungen der Seite gehalten und der Timer funktioniert auch so wie er soll. Leider wird mir immer folgende Fehlermeldung angezeigt:

For the placeholder %timeLeft% neither an input field by prepare_input() has been created nor any content by using replace().

Da ich blutiger Anfänger bin, komme ich seit Stunden nicht weiter. Weiß jemand wo genau ich diese Befehle eingeben bzw. wie ich diese vervollständigen muss?

Hier folgender PHP-Code:

$timeLeft = $timeout - time();
show('TI01', array(
  '%timeLeft%' => $timeLeft
));
question('TI01');  // Timer, JavaScript-Code EG

Der HTML-Code (TI01):

<!-- HTML-Element zur Anzeige der Zeit -->
<div id="timeDisplay" style="font-size: 200%; margin: 16px 0; text-align: center">–</div>
 
<script type="text/javascript">
<!--
 
// Verbleibende Zeit initialisieren
var timeLeft = %timeLeft%;
var timeStart = new Date();
 
// Funkton zur Aktualisierung der Anzeige und Prüfung der Zeit
function updateCountdown() {
  // Zeit berechnen
  var now = new Date();
  var timePage = Math.floor((now.getTime() - timeStart.getTime()) / 1000);  // Vergangene Zeit [Sek.]
  var remain = timeLeft - timePage;
  // Zeit abgelaufen?
  if (remain <= 0) {
    remain = 0;
    // Timer stoppen
    window.clearInterval(timerInterval);
    // Eine Meldung anzeigen (optional)
    alert("Die Zeit ist vorbei.");
    // Den Teilnehmer zur nächsten Seite weiterleiten (optional)
   // SoSciTools.submitPage();
  }
  // Zeit anzeigen
  var display = document.getElementById("timeDisplay");
  if (!display) {
    return;
  }
  while (display.lastChild) {
    display.removeChild(display.lastChild);
  }
  var minutes = Math.floor(remain / 60);
  var seconds = String(remain - 60 * minutes);
  if (seconds.length < 2) {
    seconds = "0" + seconds;
  }
  var displayText = String(minutes) + ":" + seconds;
  var displayNode = document.createTextNode(displayText);
  display.appendChild(displayNode);
}
// Initialisierung
var timerInterval = window.setInterval(updateCountdown, 250);
updateCountdown();
 
// -->
</script>

Vielen Dank!

by SoSci Survey (327k points)
Wie sieht denn Ihr PHP-Code aus? Ergänzen Sie diesen doch bitte einmal in der Frage.

1 Answer

0 votes
by SoSci Survey (327k points)

Das show() und question() in Ihrem PHP-Code doppelt sich. Beides bindet den HTML-/JavaScript-Code ein, aber nur das show() kümmert sich auch um den Platzhalter.

Entfernen Sie bitte einfach die Zeile mit dem question().

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

...