Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno JavaScript - audio

Zdravím, mám prosbu. Potřebuji v js spustit audio na základě boolean, při změně value na true a nastaveném setIntervalu 10s pro kontrolu dané value. Myslel jsem, že to bude jednodušší. Na spoustu událostí je v js trigger, ale na toto jsem nenašel :-(. Respektive není problém spustit audio, ale potřebuji aby se mi pustilo jen jednou. Při nastaveném intervalu pro kontrolu hodnoty se mi spouští každých deset sekund. Jsem začátečník, ale třeba stačí nakopnout. Díky :-).

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
function myFunction() { var x = document.createElement("AUDIO"); if (x.canPlayType("audio/mpeg")) {…
ladra 17.04.2023 11:15
ladra
function myFunction() { var x = document.createElement("AUDIO"); if (x.canPlayType("audio/mpeg")) {… nový
Wikan 17.04.2023 11:33
Wikan
Děkuji za pomoc i rady. Audio se nyní již nespouští opakovaně každých 10s, ale bohužel se mi nespust… nový
ladra 18.04.2023 15:51
ladra
A nebylo by teda lepší to přehrátí navázat přímo na změnu té hodnoty, než v cyklu kontrolovat, jestl… nový
Wikan 18.04.2023 15:56
Wikan
Díky za rady. Přikládám řešení, třeba se někomu může někdy hodit. let previousBooleanValue = GetTag… poslední
ladra 26.04.2023 17:42
ladra

function myFunction() {
var x = document.createElement("AUDIO");
if (x.canPlayType("audio/mpeg")) {
x.setAttribute("src","xxx.mp3");
} else {
x.setAttribute("src","xxx.ogg");
}
x.setAttribute("autoplay", "autoplay");
x.style.display = "none";
document.body.appendChild(x);
}
function myAlarm() {
var y = GetTagValueAsBoolean('CDK.ExtOM2');
if (y) {
myFunction();
};
}
var e = setInterval(myAlarm, 10000);

function myFunction() {
  var x = document.createElement("AUDIO");
  if (x.canPlayType("audio/mpeg")) {
    x.setAttribute("src", "xxx.mp3");
  } else {
    x.setAttribute("src", "xxx.ogg");
  }
  x.setAttribute("autoplay", "autoplay");
  x.style.display = "none";
  document.body.appendChild(x);
}
function myAlarm() {
  var y = GetTagValueAsBoolean("CDK.ExtOM2");
  if (y) {
    myFunction();
    clearInterval(e);
  }
}
var e = setInterval(myAlarm, 10000);

Jestli to s programováním myslíš trošku vážně, tak by se měl zamyslet na pojmenováním proměných, funkcí atd. Už jenom jméno by ti mělo napovědět, o co se jedná. "myFunction", "x", "y" nebo "e" ti opravdu nic neřekne.

Děkuji za pomoc i rady. Audio se nyní již nespouští opakovaně každých 10s, ale bohužel se mi nespustí znovu ani když dojde k opětovné změně hodnoty. Tzn. pokud načtu stránku a dojde ke změně hodnoty na true - audio se přehraje jak má(bez opakování). Jakmile se však následně (třeba po 1min) změní hodnoty na false a následně opět na true - audio se již nespustí.

Díky za rady. Přikládám řešení, třeba se někomu může někdy hodit.

let previousBooleanValue = GetTagValueAsBoolean('ExtWarn');
let audioStarted = false;

function playAudio() {
const audio = new Audio('xxx.mp3');
audio.play();
audioStarted = true;
}

setInterval(() => {
const myBooleanValue = GetTagValueAsBoolean('ExtWarn');
if (myBooleanValue && !previousBooleanValue && !audioStarted) {
playAudio();
}
if (!myBooleanValue) {
audioStarted = false;
}
previousBooleanValue = myBooleanValue;
}, 10000);

Zpět do poradny Odpovědět na původní otázku Nahoru