I hope, you can help me. I am now stuck at this problem for several Days and can’t solve it.
With the BTNReminder Button I set a Timer. When the time’s up the AudioElement play the sond i set. Now i Try to Stop the Sound but i am not able to Catch the AudioElement. I have tried to Mute the whole Tab, but that alsow didend Work. Idealy I woud like to make some Function, that Paus the Audio Element onclick like this audioElement.pause();
Is this possible? Did I make somwhere a Mistake?
Pleas Help :-/
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<title>Major Support</title>
<script
src="http://code.jquery.com/jquery-latest.min.js"
type="text/javascript"
></script>
</head>
<div class="buttonWrapperDiv">
<h3 id="minutes">00:00</h3>
<span id="count"></span>
<button id="stopBTNtwo">STOP</button>
</div>
<div class="btnWrapper">
<button id="BTNReminder" value="5">5 seconds</button>
</div>
</div>
<script>
$(function () {
function countdownReal(number) {
$("#").html(number);
if (number === 0) {
d.resolve();
} else {
number -= 1;
window.setTimeout(function () {
countdownReal(number);
}, 1000);
}
return d.promise();
}
function waitForAudioToFinish(audioElement) {
if (!audioElement.paused) {
setTimeout(function () {
waitForAudioToFinish(audioElement);
}, 200);
} else {
d1.resolve();
}
}
function playSong(src) {
var audioElement = document.createElement("audio");
audioElement.setAttribute("autoplay", "autoplay");
audioElement.setAttribute("id", "beepbeep");
audioElement.setAttribute("value", "test");
audioElement.setAttribute("src", src);
audioElement.play();
waitForAudioToFinish(audioElement);
function mute(audioElement){
audioElement.muted = true;
audioElement.pause();
}
return d1.promise();
}
var d = new $.Deferred();
var d1 = new $.Deferred();
$("#BTNReminder").click(function () {
var fired_button = $(this).val();
$("#BTNReminder").on("click", function () {
function countdown(fired_button) {
var seconds = 5;
var mins = 1;
function tick() {
var minutenCounter = document.getElementById("minutes");
var current_minutes = mins - 1;
seconds--;
minutenCounter.innerHTML =
current_minutes.toString() +
":" +
(seconds < 10 ? "0" : "") +
String(seconds);
if (seconds > 0) {
setTimeout(tick, 1000);
} else {
if (mins > 1) {
countdown(mins - 1);
}
}
}
tick();
}
countdown(fired_button);
function countdownZwei(fired_button) {
var seconds = 5;
var mins = 1;
function tick() {
var minutenCounter = document.getElementById("minutes");
var current_minutes = mins - 1;
seconds--;
minutenCounter.innerHTML =
current_minutes.toString() +
":" +
(seconds < 10 ? "0" : "") +
String(seconds);
if (seconds > 0) {
setTimeout(tick, 1000);
} else {
if (mins > 1) {
countdown(mins - 1);
}
}
}
tick();
}
countdownZwei(fired_button);
$(this).prop("disabled", true);
$.when(countdownReal(fired_button)).then(function () {
playSong("audio.mp3").then(function () {
$(".BTNmajor").prop("disabled", false);
});
});
});
});
});
</script>
</body>
</html>
Advertisement
Answer
I have solved the problem this way:
var audioElement = document.createElement("audio");
function playSong(src) {
audioElement.setAttribute("autoplay", "autoplay");
audioElement.setAttribute("src", src);
audioElement.play();
waitForAudioToFinish(audioElement);
return d1.promise();
}
$("#stopBTN").click(function () {
audioElement.pause()
});