Мне кажется, что ваша проблема на самом деле не связана со звуком, а заключается в том, как реализовать кнопки, чтобы получить желаемый эффект. Вы говорите, что код, который вы разместили, работает, поэтому play и pause работают нормально на вашем аудиоэлементе. Но 3 кнопки запускают 3 разных звука, а последняя кнопка останавливает любой воспроизводимый в данный момент звук, тогда как вы хотите выбрать звук с помощью одной из 3 кнопок и воспроизвести / приостановить выбранный звук с помощью последней кнопки.
Если у вас есть переменная для хранения идентификатора последних нажатых кнопок выбора звука, используйте последнюю кнопку для переключения между вызовом play () и pause () ...
<!DOCTYPE html>
<html>
<header>
<script type="text/javascript">
var selSound = 8000; //default to first sound.
var play = false; //default to paused.
function selectSound(id) {
selSound = id;
}
function togglePlay() {
var a = document.getElementById(selSound);
var b = document.getElementById("playbtn");
play = !play;
if (play) {
b.value = "Stop Playing";
a.play();
}
else {
b.value = "Start Playing";
a.pause();
}
}
</script>
</header>
<body>
<div data-role="controlgroup" data-type="horizontal">
<audio loop id="8000">
<source src="8000.mp3">
</audio>
<button onclick="selectSound('8000')">16kHz</button>
<audio loop id="18000">
<source src="18000.mp3">
</audio>
<button onclick="selectSound('18000')">18kHz</button>
<audio loop id="20000">
<source src="20000.mp3">
</audio>
<button onclick="selectSound('18000')">20kHz</button>
</div>
<div data-role="controlgroup" data-type="horizontal">
<button id="playbtn" class="ui-body-b" onclick="togglePlay()" >Start Playing</button>
</div>
</body>
</html>
Здесь первые 3 кнопки просто устанавливают переменную selSound на «8000», «18000» или «20000», затем, когда вы нажимаете последнюю кнопку для воспроизведения звука, переменная selsound используется для определения идентификатора аудио элемент, который он будет использовать. Для начала первый щелчок воспроизведет звук, а следующий щелчок остановит его, и он продолжит переключаться вперед и назад.
Это еще не завершено, и я не проверял его, поэтому он может даже не работать полностью. Но вы, вероятно, захотите, чтобы кнопка воспроизведения / паузы снова переключалась в режим «Начать воспроизведение» после завершения воспроизведения звука. В противном случае вы нажмете кнопку воспроизведения, выбранный звук будет воспроизведен и, наконец, остановлен, но кнопка все равно будет отображать «Остановить воспроизведение», затем, когда вы щелкнете по ней, она переключится на «Начать воспроизведение», а затем вам придется щелкнуть по нему. снова, чтобы начать воспроизведение образца снова. Поэтому вам, вероятно, захочется перехватить событие, когда звук прекратится, и переключить кнопку обратно на «Начать воспроизведение».
НТН