Затухание звука с использованием ванильного javascript

Как я могу скрыть аудиоэлемент с помощью vanilla js (без jquery)? Я просмотрел множество других вопросов на этом форуме, но все они кажутся слишком сложными или используют jquery. Я написал этот код ниже. Однако я получаю следующую ошибку: «Неперехваченное исключение DOMException: не удалось установить свойство« volume »в« HTMLMediaElement »: предоставленный объем (-7.52870e-16) выходит за пределы диапазона [0, 1]».

              viewer.on('mouseup', function(event) {

        var mouseDownSound = document.getElementById("mouseDownSound");
        mouseDownSound.volume = 1;
        var vol = mouseDownSound.volume;
        function fadeOut() { 
            setInterval(
              function() {
                if (vol > 0) {
                  vol -= 0.01;
                  mouseDownSound.volume = vol;
                }
                else {
                  clearInterval(fadeOut);
                }
              }, 2);
        }
        fadeOut();

    });

1 ответ

Решение

Скажем, в настоящее время имеет значение 0,005. То, как ваш код в настоящее время настроен, if (vol > 0) является true, поэтому вы вычтете 0,01, получив значение -0,005. Поскольку теперь это значение меньше нуля, вы получите сообщение об ошибке при попытке установить громкость на этот уровень.

Исправление - позвонить vol -= 0.01 перед тестом if(vol > 0). Таким образом, если vol упадет ниже 0, вы не будете пытаться установить недопустимый уровень громкости.

Другие вопросы по тегам