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>
1 Antwort
![](https://images.gutefrage.net/media/user/TechPech1984/1632773764038_nmmslarge__12_0_519_519_b8bdbc8023c4e7722d66db9f2af2d5fd.png?v=1632773764000)
naja du musst auch mal das interval abschalten
var dertimer = setInterval(function() {
.
.
.
clearInterval(dertimer);
sonst rufst du halt jede sekunde wieder den alarm auf , wenn du 5 sekunden brauchst, pack da ein zähler rein der clearIntervall nach 5 mal macht oder bei timeleft <= -5 bzw bei millisekunden -5000.
![](https://images.gutefrage.net/media/user/TechPech1984/1632773764038_nmmslarge__12_0_519_519_b8bdbc8023c4e7722d66db9f2af2d5fd.png?v=1632773764000)
natürlich lol , wo den sonst , das javascript ist doch schon komplett durchgelaufen . wenn du das ganze konstrukt und meine antwort verstehst dann siehst du wo es hingehört
![](https://images.gutefrage.net/media/user/TechPech1984/1632773764038_nmmslarge__12_0_519_519_b8bdbc8023c4e7722d66db9f2af2d5fd.png?v=1632773764000)
Da fehlen ein paar Klammern glaub ich, du packst ja das clear Interval nicht in den timer selbst :)