Воспроизвести аудио и перезапустить его onclick

Я хочу перезапустить аудиофайл в аудиоплеере HTML5. Я определил аудиофайл и кнопку play.

<audio id="audio1" src="01.wav"></audio>
<button onClick="play()">Play</button>

Когда я нажимаю кнопку play, звуковой файл начинает воспроизводиться, но когда я снова нажимаю кнопку, звуковой файл не останавливается и не будет воспроизводиться снова, пока он не достигнет конца файла.

function play() {
    document.getElementById('audio1').play();
}

Есть ли способ, который позволил бы мне перезапустить аудиофайл, когда я нажимаю кнопку, используя onclick, а не ждать остановки песни?

Ответ 1

Чтобы просто перезапустить песню, вы должны:

function play() {
    var audio = document.getElementById('audio1');
    if (audio.paused) {
        audio.play();
    }else{
        audio.currentTime = 0
    }
}

FIDDLE

Чтобы переключить его, как при звуке останавливается при повторном нажатии, и когда вы нажмете еще раз, когда он перезапустится с самого начала, вы сделаете что-то более похожее:

function play() {
    var audio = document.getElementById('audio1');
    if (audio.paused) {
        audio.play();
    }else{
        audio.pause();
        audio.currentTime = 0
    }
}

FIDDLE

Ответ 2

soundManager.setup({
preferFlash: false,
//, url: "swf/"
onready: function () {
    soundManager.createSound({
        url: [
            "http://www.html5rocks.com/en/tutorials/audio/quick/test.mp3", "http://www.html5rocks.com/en/tutorials/audio/quick/test.ogg"
        ],
        id: "music"
    });
    soundManager.createSound({
        url: [
            "http://www.w3schools.com/html/horse.mp3", 
        ],
        id: "horse"
    });
    soundManager.play("music"); 
}

}) beginDelayedInit();.

И чтобы запустить лошадь и приостановить все остальные звуки, которые сейчас играют в событии клика:

$("#horse").click(function () {
soundManager.stopAll();
soundManager.play("horse");

});