<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<script>
var audio;
function initAudioPlayer() {
audio = new Audio();
Eplay = document.getElementById("E");
Eplay.addEventListener("click", playPause("playE"));
Aplay = document.getElementById("A");
Aplay.addEventListener("click", playPause("playA"));
switch (audio) {
case "playE":
audio.src = "sound/Eguitar.mp3";
break;
case "playA":
audio.src = "sound/A-guitar.mp3";
break;
default: audio.src = "sound/highE-guitar.mp3";
}
function playPause() {
if (audio.paused) {
audio.play();
} else {
audio.pause();
}
}
}
window.addEventListener("load", initAudioPlayer);
</script>
</head>
<body>
<div class="guitar">
<button id="E">E </button>
<button id="A">A </button>
</div>
</body>
</html>
> Blockquote
有人能告诉我我做错了什么吗?我想做一个吉他调音师试图改变音频。
试试这个:你的开关没有任何值,你的函数playPause()传递参数使用。
var audio,Eplay,Aplay;
function initAudioPlayer() {
Eplay = document.getElementById("E");
Eplay.addEventListener("click", function(){playPause("playE");});//adding callback
Aplay = document.getElementById("A");
Aplay.addEventListener("click",function(){ playPause("playA");});//adding callback
}
function playPause(audio1) {//passing parameter here
alert(audio1);
audio = new Audio();
switch (audio1) {
case "playE":
audio.src = "sound/Eguitar.mp3";
break;
case "playA":
audio.src = "sound/A-guitar.mp3";
break;
default: audio.src = "sound/highE-guitar.mp3";
}
if (audio.paused) {
audio.play();
} else {
audio.pause();
}
}
window.addEventListener("load", initAudioPlayer);
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<script>
</script>
</head>
<body>
<div class="guitar">
<button id="E">E </button>
<button id="A">A </button>
</div>
</body>
</html>
switch语句应该在Eplay和Aplay元素的click事件调用的函数中。
在你的事件处理函数调用中,你正在传递字符串"playE"或"playA",所以你需要将该参数添加到函数定义中,以便你可以使用它。试试这样做:
function playPause(note) {
switch(note) {
case "playE" :
// Set audio src...
break;
case "playA" :
// Set audio src...
break;
}
// Play or pause audio
}
1)你的playPause函数在它的签名中需要一个参数。例如,function playPause(chord) {
2)您的switch (audio)
块将只在页面加载时运行一次。你希望它在每次用户点击播放/暂停按钮时运行,对吧?
将该块移动到playPause()
函数
3)修复switch
块使用的变量
查看修复了以下问题的代码:
var audio;
function initAudioPlayer() {
audio = new Audio();
Eplay = document.getElementById("E");
Eplay.addEventListener("click", playPause("playE"));
Aplay = document.getElementById("A");
Aplay.addEventListener("click", playPause("playA"));
function playPause(chord) {
switch (chord) {
case "playE":
audio.src = "sound/Eguitar.mp3";
break;
case "playA":
audio.src = "sound/A-guitar.mp3";
break;
default: audio.src = "sound/highE-guitar.mp3";
}
if (audio.paused) {
audio.play();
} else {
audio.pause();
}
}
}
window.addEventListener("load", initAudioPlayer);