2 个音频声音,我想一次播放一个 HTML5 音频元素

Posted

技术标签:

【中文标题】2 个音频声音,我想一次播放一个 HTML5 音频元素【英文标题】:2 audio sounds and I want to play one HTML5 audio element at a time 【发布时间】:2015-07-15 00:44:56 【问题描述】:

问题:我有 。

类似帖子:Play one html audio element at a time.

我看到了与我的问题类似的帖子。但是,作为一个 javascript 初学者,我不理解代码。所以我尝试了一种更简单的方法,以便我能理解,但没有奏效。如有任何建议,我将不胜感激。

HTML5 代码:(仅在此示例中,我使用了与上一篇文章相同的音频源:http://jsfiddle.net/RE006/8djstmvy/

<div>
<h2>Example 1</h2>
<audio id="sound1" src=http://geo-samples.beatport.com/lofi/5005876.LOFI.mp3 controls="controls" preload="none">
<p>Your browser does not support the audio element.</p>
</audio>
</div>

<div>
<h2>Example 2</h2>
<audio id="sound2" src=http://geo-samples.beatport.com/lofi/5005933.LOFI.mp3 controls="controls" preload="none">
<p>Your browser does not support the audio element.</p>
</audio>
</div>

JavaScript:

var $ = function (id) 
return document.getElementById(id);


var sound1_click = function() 
//starts playing
$("sound1").play ();
//pause playing
$("sound2").pause();


var sound2_click = function() 
//starts playing
$("sound2").play ();
//pause playing
$("sound1").pause();


window.onload = function () 
$("sound1").onclick = sound1_click;
$("sound2").onclick = sound2_click;

【问题讨论】:

【参考方案1】:

我认为问题是您正在列出click 事件,当您应该在听play 事件时,也由于某种原因,window.onload 在 jsfiddle 中无法正常工作,所以替换

window.onload = function () 
    $("sound1").onclick = sound1_click;
    $("sound2").onclick = sound2_click;

$("sound1").onplay = sound1_click;
$("sound2").onplay = sound2_click;

fiddle demo

或者你可以简单地概括它:

var audios = document.getElementsByTagName('audio');
for(var i=0; i<audios.length;i++)    audios[i].onplay = pauseAllAudios.bind(null, audios[i]);

function pauseAllAudios(audio)
    for(var i=0; i<audios.length;i++)
        if(audios[i]!=audio)    audios[i].pause();    
;

fiddle demo

【讨论】:

只是确认一下,我应该在js文件中包含window.onload。? 是的,我想这样更安全,但不知道为什么它在 jsfiddle 中不起作用,可能是因为整个代码块是在 iframe 中加载的。 我也可以这样写吗? jsfiddle.net/RE006/8djstmvy/4 我不明白为什么这个不起作用。 @user5117220 我不确定你为什么使用!,但请查看我更新的答案,它有通用的方法。 我试图找到一种方法来概括它,但是!是错误的选择。感谢您的帮助。

以上是关于2 个音频声音,我想一次播放一个 HTML5 音频元素的主要内容,如果未能解决你的问题,请参考以下文章

想用怎么用js实现播放音频。

HTML5 音频 - 录制保存文件正常,但通过音频控制播放时没有声音

HTML 音频 - 通过单击 [重复] 随机播放

Android不从间隔播放html5音频

如何制作html5音频播放器同步歌词

HTML5 音频循环