Ich versuche, einen Timer für ein Projekt zu machen, die Audios aufzeichnen und während ich mache, habe ich mit diesem Problem konfrontiert: setInterval nicht aufhören, warum?Warum clearInterval setInterval nicht stoppt?
Ich habe den folgenden Code:
/** Audio **/
var timerseconds = 0;
$('.audio-recorder-dialog-con').on('click', '#record', function() {
gotrecordval = document.getElementById("record").value;
//Crónometro
var timerseconds = setInterval(function() {
rseconds = parseInt(document.getElementById("r-seconds").value);
if (rseconds == 59) {
document.getElementById("r-seconds").value = "00";
}
rseconds = parseInt(document.getElementById("r-seconds").value);
rseconds += 1;
if (rseconds < 10) {
document.getElementById("r-seconds").value = ("00" + rseconds).substr(-2);
}
if (rseconds >= 10) {
document.getElementById("r-seconds").value = rseconds;
}
}, 1000);
//
if (gotrecordval == "Empezar a Grabar Audio") {
document.getElementById("record").value = "Detener/Subir";
}
if (gotrecordval == "Detener/Subir") {
document.getElementById("record").value = "Empezar a Grabar Audio";
$('.audio-recorder-dialog-con').fadeOut(500);
$(".contenido-dialog-new-d").fadeIn(500);
$("#aviaudio").fadeIn(500);
clearInterval(timerseconds);
}
});
--FIXED--
Ich habe es fixiert diese im Inneren des setInterval durch Zugabe:
//Crónometro
var timerseconds = setInterval(function(){
rseconds = parseInt(document.getElementById("r-seconds").value);
if(rseconds==59){document.getElementById("r-seconds").value = "00";}
rseconds = parseInt(document.getElementById("r-seconds").value);
rseconds+=1;
if(rseconds<10){document.getElementById("r-seconds").value = ("00" + rseconds).substr(-2);}
if(rseconds>=10){document.getElementById("r-seconds").value = rseconds;}
--Code added-
$('html, body').on('click', '.open-audio', function(){
clearInterval(timerseconds);
});
--
}, 1000);
//
“. open-audio "ist ein Bild, das den Aufzeichnungsdialog für den Benutzer öffnet. Wenn Sie es also erneut öffnen, funktioniert der clearInterval.
Sie scoped 'timerseconds' zum' click' Handler wegen seiner 'var' Erklärung und das 'clearInterval' steht hinter einer Bedingung der' if' Anweisung, also solltest du das überprüfen. Darüber hinaus erleichtert das Einrücken Ihres Codes das Lesen und Debuggen erheblich. – spanky
Wenn das Intervall mit einem Klick gestartet wird und Sie es beim nächsten Klick stoppen möchten, funktioniert es nicht, da Sie gerade 'Zeitüberschreitung' mit einem neuen Intervall überschrieben haben und der Verweis auf das alte Intervall verloren gegangen ist. und jetzt kann es nicht gestoppt werden. – adeneo