2013-08-27 73 views
1

當HTML5音頻元素停止播放時,我需要調用一個函數。具體來說,該功能將重置搜索欄並將暫停圖標更改爲播放圖標。當HTML5音頻元素停止播放時收聽

這裏是我的JavaScript:

var audio = document.getElementById('audio'); 

audio.addEventListener('ended', stopAudio); 

function stopAudio() { 
    audio.stop(); 
    $('.play-pause .play').show(); 
    $('.play-pause .pause').hide(); 
} 

..只有在代碼中不執行調用一次。音頻播放成功併成功結束,它只是不調用我的功能。我錯過了什麼?

+1

該代碼對我來說看起來不錯。你確定它沒有運行?也許在stopAudio()中嘗試一個console.log()或類似的東西。 –

+0

你的'

回答

0

這是因爲您在使用getElementById並傳遞audio時,我認爲您的意思是使用getElementsByTagName,無論是或者您對音頻元素都有錯誤的ID。

+0

不是 - 這是因爲我有'audio.stop();'當我需要'音頻。停止;'。用'getElementById'完成工作。 –

+0

那麼你的問題就錯了,它正在調用這個函數。 – ars265

+1

當然,但你的回答也是如此?大聲笑 –

0

我需要:

audio.stop;

而不是...

audio.stop();

其中固定它:)

+0

你根本不需要那條線。音頻已經停止,因此「結束」事件觸發。另外,在音頻元素上甚至不存在稱爲「停止」的方法。看到我的答案。 – idbehold

0

HTML音訊元素沒有方法stop()。你的事件處理程序不工作的原因是因爲audio.stop();行會引發一個錯誤,並且它下面的任何內容都不會執行。

0

您的代碼應如下所示,以檢測您的音頻是否已結束。無法檢測它是否已停止,但可以檢測它是否已結束或已暫停。如果您正在查找暫停時的代碼,請用「暫停」替換「已結束」

document.getElementById('audio').addEventListener("ended",function() { 

$('.play-pause .play').show(); 
$('.play-pause .pause').hide(); 
}