我的控制台日志抛出以下错误:
未捕获到的DOMException:无法在上设置'volume'属性 'HTMLMediaElement':提供的音量(1.005)超出范围 [0,1]。
有人可以向我解释如何解决此问题吗?任何帮助表示赞赏!谢谢。
代码:
// Fade out/in functions for music player
function audio_fade_out(){
var timer,
myAudio = document.getElementById("musicPlayer");
if (myAudio.volume > 0) {
myAudio.volume -= 0.003;
timer = setTimeout(audio_fade_out,0);
console.log(myAudio.volume);
}
}
function audio_fade_in(){
var timer,
myAudio = document.getElementById("musicPlayer");
if (myAudio.volume < $audio_volume) {
myAudio.volume += 0.005;
timer = setTimeout(audio_fade_in,10);
console.log(myAudio.volume);
}
}
答案 0 :(得分:3)
对于.divButton {
background-color: cyan;
border: none;
color: white;
padding: 12px 30px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
}
,可能会低于audio_fade_out()
。如果0
是myAudio.volume
,则通过了0.001
的测试,但是您仍然从中减去> 0
。
在0.003
中,谁知道是因为您没有向我们展示audio_fade_in()
是什么。
按照您的方法,将要做的是将音量设置为$audio_volume
,以钳制值等于或大于Math.max(myAudioVolume - 0.003, 0)
的任何值。对0
... audio_fade_in()
求逆。
您实际上应该做的是使用Web Audio API并增加Math.min(myAudioVolume + 0.005, 1)
的{{1}}参数。听起来会更顺畅。
https://developer.mozilla.org/en-US/docs/Web/API/AudioParam/exponentialRampToValueAtTime