0 votes
in SoSci Survey (dt.) by s109993 (10.0k points)

Ich würde gerne ein alert("TEXT") aufrufen, wenn der Timer (Countdown) eine bestimmte Zahl unterschreitet.

Meine Idee war:

if (out < 10) {
    return;
    alert('TEXT');
  }

Die variable Out wird ja in dem von SoSci angegebenen Countdown Script definiert mit

  var out = document.getElementById("remain");

Allerdings funktioniert das nicht so ganz. Muss die Zahl 10 (Sekunden) in einem anderen Format geschrieben werden?

Viele Grüße

by SoSci Survey (304k points)
Schwer zu sagen ... wie sieht denn der restliche JavaScript-Code aus? In dem Standard-Timer-Code (https://www.soscisurvey.de/help/doku.php/de:create:timer-countdown) gibt es keine Variable "out", daher meine Nachfrage.
by s109993 (10.0k points)
https://www.soscisurvey.de/help/doku.php/de:create:timer-submit

Das Skript habe ich aus diesem Kapitel, unter "Countdown anzeigen" - funktioniert  soweit auch sehr gut.

1 Answer

0 votes
by SoSci Survey (304k points)

Danke für den Link. Die Variable out ist in diesem Beispiel ein HTML-Element, welches die Anzeige des Countdown aufnimmt.

Wenn Sie stattdessen die Variable time verwenden, sollte es funktionieren. Zum Beispiel am Ende der Funktion updateCountdown().

Aber Vorsicht: Der alert() wird dann jede Sekunde gezeigt. Wenn Sie das nicht haben möchten, müssten Sie nach der ersten Anzeige eine Variable setzen, z.B.

if ((time < 10) && !displayAlert) {
  alert('TEXT');
  displayAlert = true;
}

Die Variable displayAlert sollte zu Beginn des Scripts definiert werden:

var displayAlert = false;
by s109993 (10.0k points)
Ah, ok. Sehr gut. Ich könnte auch einfach time == 10machen, dann muss die Variable displayAlert nicht extra erstellt werden.

Noch eine Zusatzfrage:
Die benannte Countdown Funktion liegt in einem Textbaustein im Fragebogen. Ich würde die Variable time allerdings gerne in einem anderen JS Script verwenden, welches auf der gleichen Seite im Fragebogen liegt.
Da die Variable Time innerhalb einer Funktion definiert wird, muss sie meines Wissens als globale Variable definiert werden, um außerhalb der Funktion verwendet werden zu können.

Ich hatte zwei Versuche das zu tun:

1)
var window.time = Math.ceil((timeout - date.getTime() - 50) / 1000);  // Verbleibende Zeit in Sekunden
---> Da hat gar nichts mehr funktioniert.

2)
Declare Variable time außerhalb der Funktion, und teile ihr die Werte innerhalb der Funktion zu
var time;
function updateCountdown() {
  // Zeit berechnen
  var date = new Date();
  time = Math.ceil((timeout - date.getTime() - 50) / 1000);  // Verbleibende Zeit in Sekunden

Es wäre schön zu wissen, ob der zweite Ansatz der richtige ist, oder ob es eine dritte Option gibt. Dann könnte ich das als Fehlerquelle ausschließen.
by SoSci Survey (304k points)
> Ah, ok. Sehr gut. Ich könnte auch einfach time == 10machen, dann muss die Variable displayAlert nicht extra erstellt werden.

In den meisten Fällen funktioniert das, aber Sie können Sie sich nicht darauf verlassen, dass die 10 tatsächlich vorkommt. Wenn der Timer aufgrund anderer Arbeiten am PC nicht sauber läuft, vergehen vielleicht 1,2 Sekunden und intern hat man zuerst 11,1 und dann 9,9 Sekunden. Und ebenfalls kann es passieren, dass Sie die 10 zweimal bekommen. Unwahrscheinlich, aber ich halte die oben geschilderte Lösung für zuverlässiger.

> Es wäre schön zu wissen, ob der zweite Ansatz der richtige ist

Die Variable time haben Sie schon in Ihrer Funktion, Sie müssen nur das displayAlert "außerhalb" definieren.

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

...