stroika3: Timeout

^Moin, bei meiner ersten Frage ist mir hier ja schon grandios geholfen worden, auch wenn ich da unbeabsichtigt irgendwie mehr losgetreten habe als gedacht.

In dem Zusammenhang hat sich für mich eine weitere Frage ergeben. Zu folgendem Code (den ich mir nicht selbst erarbeitet habe, nur selbst kopiert) möchte ich ein Timeout von 5s hinzufügen:

audioElement.addEventListener('play', event => {
  infoElement.hidden = false;
});

habe es wie folgt bereits probiert und habe da aufgrund meiner Unkenntnis sicherlich einige Fehler drin, weswegen es nicht klappt.

audioElement.addEventListener('play', setTimeout(function() { event => {
  infoElement.hidden = false;},1000);
});

Habe auch schon ein paar andere Versionen der Schreibweise probiert, aber bin blutiger Anfänger was js angeht von daher kann es sein, dass mein Versuch die grundlegendsten Regeln missachtet. Bitte darum das nachzusehen.

Gruß stroika3

  1. Hallo,

    audioElement.addEventListener('play', event => {
      infoElement.hidden = false;
    });
    

    ich glaube, die "=>"-Notation hat dich da aufs Glatteis geführt. Ich schreibe das mal um:

    audioElement.addEventListener('play', function(event) {
      infoElement.hidden = false;
    });
    

    Und jetzt möchtest du das, was in der Eventhandler-Funktion steht, verzögert aufrufen:

    audioElement.addEventListener('play', function(event) {
      setTimeout(function(){
        infoElement.hidden = false;
      },1000);
    });
    

    Gruß
    Jürgen

    1. Vielen Dank für die Erläuterung. Hat damit perfekt geklappt.

      Gruß stroika3

  2. @@stroika3

    In dem Zusammenhang hat sich für mich eine weitere Frage ergeben. Zu folgendem Code (den ich mir nicht selbst erarbeitet habe, nur selbst kopiert) möchte ich ein Timeout von 5s hinzufügen:

    Für mich ergibt sich da eine weitere Frage: Ich drücke auf Start, 2 Sekunden später auf Stop. Nach weiteren 3 Sekunden – wenn ich längst ganz woanders bin – ploppt ein Fenster auf. Hä??

    😷 LLAP

    --
    „Sag mir, wie Du Deine Maske trägst, und ich sage Dir, ob Du ein Idiot bist.“ —@Ann_Waeltin
    1. Moin, ploppt kein Fenster auf, erscheint nur der Rest der Nachricht. Und ohne den wird der geneigte Geocacher nicht weiterkommen. Da vorher "play drücken" steht wird das hoffentlich jeder verstehen und lange genug warten. Gruß

  3. Hallo stroika3,

    Lektüre

    Du hast eine Pfeilfunktion in eine normale Funktion gesteckt. Allerdings einfach so, ohne was damit zu machen, und deswegen passiert auch nichts. Du hättest genauso gut schreiben können:

    setTimeout(function() { 12345; }, 1000);
    

    Die 12345 steht einfach da, es wird nichts damit gemacht. Sie wird auch nicht zurückgegeben. Es ist grundsätzlich zulässig, dass ein JavaScript-Statement einfach nur aus einem Werteausdruck besteht. Und zwar für den Fall, dass darin eine Funktion aufgerufen wird, die etwas tut. 12345 ist ebenfalls ein Werteausdruck. Aber einer, der nichts tut.

    Es gibt Anwendungsfälle, wo in einer Funktion eine Pfeilfunktion steht. Aber nicht einfach so, sondern sie wird als Ergebnis zurückgegeben oder anderswohin als Parameter übegeben. Für deinen Fall wäre das wenig sinnvoll.

    Rolf

    --
    sumpsi - posui - obstruxi