带有音频标签的多个 Play/Pause 按钮
Multiple Play/Pause button with audio tag
我在同一代码中遇到超过 1 个 play/pause 按钮的问题,我有一个 table,其中有一个按钮,然后是右侧单元格上的歌曲名称。
这个按钮工作得很好,这是代码(从网上得到的):
<script language="javascript">
function play_pause() {
var myAudio = document.getElementById("myAudio");
if (myAudio.paused) {
myAudio.play();
} else {
myAudio.pause();
}
}
</script>
以及音频部分
<html>
<table>
<tr>
<td>
<audio preload="none" id="myAudio" src="music.mp3" type="audio/mpeg"</audio>
<img src="play.png" width=30 height=30 border="0" onclick="play_pause()";>
</td>
</tr>
<tr>
<td>
<audio preload="none" id="myAudio" src="music2.mp3" type="audio/mpeg"</audio>
<img src="play.png" width=30 height=30 border="0" onclick="play_pause()";>
</td>
</tr>
</table>
</html>
因此,每当我在我的网络上播放任何按钮时,它都会开始播放第一首歌曲,如果我尝试播放另一首歌曲,就像我正在取消暂停第一首歌曲一样(实际上只播放第一首歌曲,即使我找到了另一首歌曲)
我很确定是因为我的函数中缺少代码,并且因为两个音频标签都引用相同的 ID,但是,我究竟必须在我的脚本上实现什么才能使我的页面正常工作?我已经尝试了很多东西,但不能真正让它按我想要的方式工作。
非常感谢一些建议,提前致谢。
Ps:现在对我来说不是必需的,但是如果使用代码我还可以获得音频的更改图标,我的意思是当 "onclick" 它变为暂停图标时,谢谢!
你可以这样区分对象
function play_pause(player) {
var myAudio = document.getElementById(player);
if (myAudio.paused) {
myAudio.play();
} else {
myAudio.pause();
}
}
和
<html>
<table>
<tr>
<td>
<audio preload="none" id="myAudio1" src="music.mp3" type="audio/mpeg"</audio>
<img src="play.png" width=30 height=30 border="0" onclick="play_pause('myAudio1')";>
</td>
</tr>
<tr>
<td>
<audio preload="none" id="myAudio2" src="music2.mp3" type="audio/mpeg"</audio>
<img src="play.png" width=30 height=30 border="0" onclick="play_pause('myAudio2')";>
</td>
</tr>
</table>
编辑:
超过 4 个玩家使用此循环
var songs=['song1.mp3','song2.mp3','song3.mp3','song4.mp3'];
var players="<table>";
for(var i=0;i<songs.length;i++){
players+='<tr>
<td>
<audio preload="none" id="myAudio_'+i+'" src="'+songs[i]+'" type="audio/mpeg"</audio>
<img src="play.png" width=30 height=30 border="0" onclick="play_pause(\'myAudio_'+i+'\')";>
</td>
</tr>';
}
players+="</table>"
document.getElementById('myTable').innerHTML=players;
和你的html
<body> <div id='myTable'></div> </body>
我在同一代码中遇到超过 1 个 play/pause 按钮的问题,我有一个 table,其中有一个按钮,然后是右侧单元格上的歌曲名称。
这个按钮工作得很好,这是代码(从网上得到的):
<script language="javascript">
function play_pause() {
var myAudio = document.getElementById("myAudio");
if (myAudio.paused) {
myAudio.play();
} else {
myAudio.pause();
}
}
</script>
以及音频部分
<html>
<table>
<tr>
<td>
<audio preload="none" id="myAudio" src="music.mp3" type="audio/mpeg"</audio>
<img src="play.png" width=30 height=30 border="0" onclick="play_pause()";>
</td>
</tr>
<tr>
<td>
<audio preload="none" id="myAudio" src="music2.mp3" type="audio/mpeg"</audio>
<img src="play.png" width=30 height=30 border="0" onclick="play_pause()";>
</td>
</tr>
</table>
</html>
因此,每当我在我的网络上播放任何按钮时,它都会开始播放第一首歌曲,如果我尝试播放另一首歌曲,就像我正在取消暂停第一首歌曲一样(实际上只播放第一首歌曲,即使我找到了另一首歌曲) 我很确定是因为我的函数中缺少代码,并且因为两个音频标签都引用相同的 ID,但是,我究竟必须在我的脚本上实现什么才能使我的页面正常工作?我已经尝试了很多东西,但不能真正让它按我想要的方式工作。 非常感谢一些建议,提前致谢。
Ps:现在对我来说不是必需的,但是如果使用代码我还可以获得音频的更改图标,我的意思是当 "onclick" 它变为暂停图标时,谢谢!
你可以这样区分对象
function play_pause(player) {
var myAudio = document.getElementById(player);
if (myAudio.paused) {
myAudio.play();
} else {
myAudio.pause();
}
}
和
<html>
<table>
<tr>
<td>
<audio preload="none" id="myAudio1" src="music.mp3" type="audio/mpeg"</audio>
<img src="play.png" width=30 height=30 border="0" onclick="play_pause('myAudio1')";>
</td>
</tr>
<tr>
<td>
<audio preload="none" id="myAudio2" src="music2.mp3" type="audio/mpeg"</audio>
<img src="play.png" width=30 height=30 border="0" onclick="play_pause('myAudio2')";>
</td>
</tr>
</table>
编辑: 超过 4 个玩家使用此循环
var songs=['song1.mp3','song2.mp3','song3.mp3','song4.mp3'];
var players="<table>";
for(var i=0;i<songs.length;i++){
players+='<tr>
<td>
<audio preload="none" id="myAudio_'+i+'" src="'+songs[i]+'" type="audio/mpeg"</audio>
<img src="play.png" width=30 height=30 border="0" onclick="play_pause(\'myAudio_'+i+'\')";>
</td>
</tr>';
}
players+="</table>"
document.getElementById('myTable').innerHTML=players;
和你的html
<body> <div id='myTable'></div> </body>