2011-06-15 15 views
0

我有这个代码,似乎在铬和Safari浏览器(不知道歌剧和ie ..只是没有测试..),但在Firefox中,它至少至少不重复播放功能,但只运行一次。我的代码在Firefox中不起作用...?

http://jsfiddle.net/ZL5XN/

HTML:

<div class="Start">Play</div><div class="Stop">Stop</div> 
<br /><br /> 
<p>Lorem Ipsum Dolor Sit Amet...</p> 

JS:

var myTimeOut, Stop, stop_flag; 

$('.Start').click(function() { 
    stop_flag = 0; 
    Repeat(); 
}); 

$('.Stop').click(function() { 
    clearTimeout(Stop); 
    stop_flag = 1; 
    $('p').show('slow'); 
}); 



function Repeat() { 
    if(stop_flag == 1) 
    { 
     return; 
    } 
    else 
    { 
     $('p').show('slow').delay(400).hide('slow', function() {Stop = setTimeout(Repeat(), 1100)}); 
    } 
} 

问题是..任何想法,为什么它没有在Firefox

工作
+1

错误:无用的方法setTimeout(约缺失报价参数?) – Max 2011-06-15 07:17:07

+0

@最大错误:EDONTU SEEVAL – Alnitak 2011-06-15 07:58:49

回答

4

你应该说:

Stop = setTimeout(Repeat, 1100); 

注意缺少的括号内。目前您正在通过Repeat()告诉它调用函数返回,这当然不存在。

+0

+1这是一个非常简洁的解释方式 – lnrbob 2011-06-15 07:24:30

2

不知道为什么Firefox是只有一个conmplaining,但你写了你的setTimeout错误。它应该是:

$('p').show('slow').delay(400).hide('slow', function() {Stop = setTimeout(Repeat, 1100)}); 
1

你的问题是这样

变化:

setTimeout(Repeat(), 1100)

要:

setTimeout("Repeat()", 1100) or setTimeout(Repeat, 1100)

看到这里的工作示例: http://jsfiddle.net/ZL5XN/1/

+1

**不要**使用引号中的版本! – Alnitak 2011-06-15 08:15:26