0 votes
in SoSci Survey (dt.) by s191742 (170 points)

Hallo! Ich habe folgendes Problem. Dieser Code // Eine Meldung anzeigen
alert("Die Zeit ist vorbei. "); führt dazu, dass das Feld zweimal mit ok weggedrückt werden muss. Wenn ich es entferne, wechselt es automatisch zur nächsten Seite. Jedoch finde ich die Meldung hilfreich. Wie ist es möglich das der Befehl alert nicht zu einer doppelten Anzeige des Fensters führt?

Ich wäre sehr dankbar!

 <script type="text/javascript">
<!--
 
 
// 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>

<p>Verbleibende Zeit: <span id="remain"></span></p>
<script type="text/javascript">
<!--
 
// Funktion zur Weiterleitung
function weiter() {
    // Eine Meldung anzeigen
  alert("Die Zeit ist vorbei. Drücke 2x auf Ok");
  // 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() - 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 < 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);
});
 
// -->

1 Answer

0 votes
by SoSci Survey (327k points)

Sie haben den Abschnitt "Initialisierung der Weiterleitung" zweimal in Ihrem Code.

Das führt dazu, dass nach Ablauf der Zeit zweimal die Funktion aufgerufen wird - und entsprechend erscheinen zwei Alert-Boxen. Entfernen Sie den oberen <script>-Block doch bitte einmal aus Ihrem Code.

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

...