【发布时间】:2020-09-02 18:26:09
【问题描述】:
我有一个 HTML 文件,只是为了测试 JavaScript 中的事件侦听器的播放/暂停和增加/减少音量。我无法准确描述我正在经历的异常情况。我确信有一个合乎逻辑的解释,但我无法理解它。
基本上,向上和向下箭头键会改变音频的音量。但是,当我以某种模式按下键时,例如向上,向上,向下,向下,向上,向下,向上,向下 - 计数不遵循任何数学规则:D 不是增加音量,而是减少了指定值,反之亦然。
我确定如果你在回答这个问题,你知道怎么做,但要测试它,只需更改 src 内的音频文件的名称并将相同的文件放入项目中。然后只需在您选择的浏览器中本地加载 HTML 并进行调试。将显示当前音量。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Audio API</title>
</head>
<body>
<audio>
<source src="njaar.mp3" type="audio/mpeg">
</audio>
<p id="currentVolume"></p>
<script>
var audio;
window.addEventListener('load', init, false);
window.addEventListener("click", playPause, false);
window.addEventListener("keydown", changeVolume, false);
function init() {
audio = document.getElementsByTagName('audio')[0];
audio.play();
}
function playPause() {
if (audio.paused) {
audio.play();
} else {
audio.pause();
}
}
function changeVolume() {
document.getElementById("currentVolume").innerHTML = audio.volume;
// if (audio.volume === 1) {
// document.getElementById("currentVolume").innerHTML = audio.volume;
// }
if (event.key === "ArrowUp") {
try {
audio.volume = audio.volume + 0.05;
} catch (e) {
console.error("Exception: " + e + "has been caught!");
}
}
if (event.key === "ArrowDown") {
try {
audio.volume = audio.volume - 0.05;
} catch (e) {
console.error("Exception: " + e + "has been caught!");
}
}
if (audio.volume < 0.05) {
audio.volume = 0;
}
}
</script>
</body>
</html>
【问题讨论】:
-
按这个序列的速度有关系吗?
-
不,没关系,保罗是对的。
标签: javascript html google-chrome-devtools