2013-08-27 78 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(); 
}