为了账号安全,请及时绑定邮箱和手机立即绑定

HTML 音频 - 提供的音量 (-0.1) 超出范围 - 数学最大值不起作用

HTML 音频 - 提供的音量 (-0.1) 超出范围 - 数学最大值不起作用

慕田峪9158850 2023-07-29 16:47:38
我创建了一个音量减小按钮,我试图防止音量低于 0.0。由于某种原因,Math.max 无法正常工作。通过检查当前值/时间不确定我做错了什么。如何添加一个逻辑,即如果音量等于 0.0 则返回并且不执行任何操作?请参阅 -> 向下箭头键代码 40。(() => {    const audio = document.querySelector('audio');    const playButton = document.getElementById('play');    const progress = document.querySelector('.player__progress');    const progressBar = document.querySelector('.player__progress__inner');    const next = document.getElementById('next');    const prev = document.getElementById('previous');    const title = document.querySelector('.title');    const status = document.querySelector('.status');    const poster = document.querySelector('.player__image');    if (!audio) {        return;    }    // On play button click.    const onPlayStart = () => {        audio.paused ? audio.play() : audio.pause();    };    // On audio playing.    const onPlaying = () => {        playButton.innerHTML = `<i class="fas fa-pause"></i>`;        // Change title if is currently playing.        // status.innerText = `status: Wordt afgespeeld.`;    };    // On audio paused.    const onPaused = () => {        playButton.innerHTML = `<i class="fas fa-play"></i>`;        // Change title if is currently paused.        // status.innerText = `status: Is gepauzeerd.`;    };    // Update progress bar    const onTimeUpdate = () => {        const percent = (audio.currentTime / audio.duration) * 100;        progressBar.style.width = `${percent}%`;    };    // Update progress on click    const onProgressUpdate = (e) => {        audio.currentTime = (e.offsetX / progress.clientWidth) * audio.duration;    };    const onKeyPress = (e) => {        e.preventDefault();        // Spacebar        if (e.keyCode === 32) {            audio.paused ? audio.play() : audio.pause();        }        // Right arrow        if (e.keyCode === 39) {            // Forward by 10 sec.            audio.currentTime += 10;        }
查看完整描述

1 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

您可以使用下面这些功能。他们检查一个值是否达到某个阈值,如果没有达到则进行计算,否则只返回该值。


这意味着,对于增量,它会继续添加,直到1达到,然后返回1而不向上计数,从而有效地停止增量。


计算是因为浮点数不精确。这可确保每个值都是一位小数点数字(0.1、0.2、0.3等)。


const incrementVolume = value => 

    value < 1 ? (value * 10 + 1) / 10 : value;


const decrementVolume = value => 

    value > 0 ? (value * 10 - 1) / 10 : value;

然后在 if 语句中实现这些函数,并在其中重新分配volume属性。


// Arrow up

if (e.keyCode === 38) {

  // Volume up

  audio.volume = incrementVolume(audio.volume);

}


// Arrow down

if (e.keyCode === 40) {

  // Volume down

  audio.volume = decrementVolume(audio.volume);

}


查看完整回答
反对 回复 2023-07-29
  • 1 回答
  • 0 关注
  • 123 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信