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

标签 javascript html audio

问题:我有 2 个音频声音,我想一次播放一个 HTML5 音频元素。

类似帖子: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;
}

最佳答案

我认为问题是您列出了 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

关于javascript - 2 个音频声音,我想一次播放一个 HTML5 音频元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31419690/

相关文章:

javascript - 如何在提交表单时添加加载 gif

php - 获取一列中的数据

javascript - 在 URL 处内嵌播放声音文件

javascript - jQuery.data() : set values from php

javascript - 子进程 spawn 在 Electron 中产生 TypeError "stdout.on is not a function"

javascript - 使用 ES6 代理替换原型(prototype)时超出最大调用堆栈大小

html - 在一些文本下划线并将下标居中

javascript - 单击提交输入时如何防止 Accordion 切换?

html - 在 Chrome 中重播 HTML5 音频

android - 在 Google+ Hangout API 中处理音频数据