慕田峪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);
}
添加回答
舉報
0/150
提交
取消