亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 173 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號