有人可以帮我清除下面代码中的SetInterval。我已经厌倦了window.clearInterval(intervalListener)它无法正常工作。
<audio id="audio1" controls="controls" ontimeupdate="init(this.currentTime)"; style="display:block;">
<source src="Audio.mp3" type="audio/mpeg">
<source src="Audio.ogg" type="audio/ogg">
<embed height="50" width="100" src="Audio.mp3"></embed>
</audio>
function init(val)
{
var audio=document.getElementById('audio1');
if(val==2)
{
var a=0;
intervalListener = self.setInterval(function()
{
alert(a);
if(a===8)
{
window.clearInterval(intervalListener);
}
a++;
}, 1000);
}
}
答案 0 :(得分:0)
两件事:
self.setInterval
self中实际上是窗口。alert(a)
可能会阻止间隔,因为它会停止JS执行,请尝试console.log(a)
。此外,setInterval
通常更好地替换为setTimeout
function interval(a){
setTimeout(function(){
console.log(a);
if(a<8) interval(++a);
},1000);
}
interval(0);
或者,如果您不喜欢匿名功能,可以使用:
var a = 0;
function interval2(){
console.log(a);
if(a<8){
a++;
setTimeout(interval2,1000);
}
}
interval2();
答案 1 :(得分:0)
尝试在函数外声明intervalListener:
var intervalListener;
function init(val) {
var audio=document.getElementById('audio1');
if(val==2) {
var a=0;
intervalListener = self.setInterval(function(){
alert(a);
if(a===8){
window.clearInterval(intervalListener);
}
a++;
}, 1000);
}
}
答案 2 :(得分:0)
您需要在所有函数之外声明a
和intervalListener
,以便它们位于全局范围内。