我有这个代码似乎在chrome和safari中工作(不确定Opera和ie ..还没有测试..)但是在Firefox中它至少不重复播放功能但只是运行一次。
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中运行的任何想法
答案 0 :(得分:4)
你应该说:
Stop = setTimeout(Repeat, 1100);
注意缺少括号。目前你告诉它通过Repeat()
调用函数返回,当然没有。
答案 1 :(得分:2)
不确定为什么firefox是唯一一个conmplaining但你写错了你的setTimeout。它应该是:
$('p').show('slow').delay(400).hide('slow', function() {Stop = setTimeout(Repeat, 1100)});
答案 2 :(得分:1)
你的问题是这个
变化:
setTimeout(Repeat(),1100)
要:
setTimeout(“Repeat()”,1100)或setTimeout(Repeat,1100)
请参阅此处的工作示例: http://jsfiddle.net/ZL5XN/1/