In Javascript eine Funktion beenden?

Hallo zusammen,

ich habe ein kleine App "Eieruhr" geschrieben, wo man per Button einen Timer startet der 5 Minuten runterzählt und ein Alarm losgeht sobald die 5 Minuten um sind.

Problem: sobald der Timer runtergelaufen ist klingelt zwar der Alarm allerdings kriege ich es nicht hin, dass der Alarm z.B. nach 5 Sekunden aufhört zu klingeln - stattdessen läuft er ganze Zeit weiter bis man die App geschlossen hat.

Hat jemand eine Lösung von euch?

Code:

  <script>
    let alarm = new Audio('snd/alarm.wav');
    let timerStarted = false;
    function startTimer() {
      if (!timerStarted) {
        let startTime = new Date().getTime();
        let fiveMinutes = 1000 * 60 * 5;
        let endTime = startTime + fiveMinutes;
        setInterval(function() {
          let timeLeft = endTime - new Date().getTime();
          if(timeLeft > 0){
            let minutes = timeLeft / (1000 * 60);
            minutes = Math.floor(minutes);
            let seconds = (timeLeft / 1000) % 60;
            seconds = Math.round(seconds);
            seconds = ('0' + seconds).slice(-2);
            let text = '0' + minutes + " : " + seconds;
            timer.innerHTML = text;
          } else {
            alarm.play();
            timer.innerHTML = '00 : 00';
            5000;
           }
        }, 1000);
        timerStarted = true;
      }
    }
  </script>
Computer, programmieren, JavaScript
Warum ist $_POST hier leer?

Hi, arbeite gerade an nem Kontaktformular, welches mit JQuery und Ajax gesendet werden soll. Hier der Code:

let form = $(this);
let actionUrl = "assets/php/contact.php";

$.ajax({
    type: "POST",
    url: actionUrl,
    contentType: "application/json",
    data: form.serialize(),
    success: function (backendError) {
        console.log(backendError);
        errorHandler(backendError);
    },
    error: function () {
        console.log("failure");
        alert("Internal Error occured. Please try again later");
    }
});

hier der PHP Code zum senden:

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    try {
        $errors = array();
        $name = "";
        $email = "";
        $human = "";
        $message = "";

        if (empty($_POST["name"])) {
            $errors[] = "name";
        } else {
            $name = $_POST["name"];
        }

        if (empty($_POST["email"])) {
            $errors[] = "email";
        } else {
            $email = $_POST["email"];
        }

        if (empty($_POST["human"])) {
            $errors[] = "human";
        }

        if (empty($_POST["message"])) {
            $errors[] = "message";
        } else {
            $message = $_POST["message"];
        }

        if (count($errors) === 0) {
            $to = "my@email.de";
            $subject = "Kontaktformular - " . $name;
            $message = "";
            $additional_headers = array(
                "From" => $email,
                "Reply-To" => $email,
                "X-Mailer" => phpversion()
            );

            mail($to, $subject, $message, $additional_headers);
            $response["error"] = false;
            echo json_encode($response);
            exit;
        } else {
            $response["error"] = $errors;
            echo json_encode($response);
            exit;
        }
    } catch (Exception $exception) {
        // in Log File Time + Error + IP
        exit;
    }
}

mein Problem: das POST Array is leer. Habs mir mal ganz oben ausgeben lassen, und stand nix drin, obwohl jquery die inputfelder per POST an das PHP File sendet. Ich denke, dass ich irgendwas bei der $ajax methode falsch gemacht habe, und es deshalb net funktioniert. bin am verzweifeln :) danke für jede Hilfe!

Computer, HTML, Webseite, programmieren, JavaScript, AJAX, JQuery, PHP
Ton deaktiviert, wenn zweite Audioquelle verschwindet?

Hallo,

ich habe schon seit längerem (mind. 6 Monate) folgendes Problem:

Wenn ich an meinem PC z.B Musik höre und nun auf eine Internetseite gehe wo irgendein Video mit Ton abgespielt wird und ich dann eine der beiden Audio-Quellen deaktiviere/schließe, dann ist der gesamte Ton weg, auch für die Quelle, wo ich nichts geändert habe.

Es spielt auch keine Rolle in welche Konstellation das passiert: Ob zwei Youtube-Videos, ein Youtube-Video und VLC-Media-Player, oder komplett andere Quellen.

Das Problem lässt sich bei mir auch jederzeit nachstellen. Ich kann auch zwei Audio-Quellen gleichzeitig laufen lassen, kein Problem: Erst wenn ich eine ausschalte, dann ist auch die zweite weg. Um das Problem zu lösen, muss ich entweder Tab/Programm schließen oder beim VLC-Media-Player reicht es oft auch, einfach Pause zu klicken, ein Lied vor/zurück und wieder Play.

Ich habe bereits die Treiber mehrmals aktualisiert und auch mal komplett deinstalliert und neu installiert. Auch mein Betriebssystem ist immer auf dem aktuellsten Stand (musste in der Zwischenzeit auch schonmal komplett neu installieren).

Das einzige, was ich bisher rausfinden konnte ist: Es tritt nur auf, wenn ich meine Bluetooth-Box von JBL verwende (die Box habe ich aber schon deutlich länger). Lass ich z.B Sound über Monitor laufen, dann tritt das nicht auf.

Weil ich nicht weiter komme und ich auch im Internet kaum etwas hierzu finde, was mir hilft, hoffe ich, dass mir hier jemand sagen kann, wie man das lösen kann?

PC, Computer, Technik, Fehler, Ton, JBL, Treiber

Meistgelesene Beiträge zum Thema Computer