2017-04-21 40 views
0

DEMO:http://jsfiddle.net/0s730kxx/玩自举酥料饼上环

我试图打开引导酥料饼的自动开上环,但到目前为止,我有只管理到自动播放一次。

HTML:

<div class="container"> 
    <a href="#" title="Header"class="myclass p1" data-toggle="popover" data-trigger="hover" data-placement="left" data-content="Some content">Hover Left</a> | 
    <a href="#" title="Header"class="myclass p2" data-toggle="popover" data-trigger="hover" data-placement="right" class="myclass" data-content="Some content">Hover Right</a> | 
    <a href="#" title="Header" class="myclass p3" data-toggle="popover" data-trigger="hover" data-placement="top" data-content="Some content Yo Bestie">Click Me</a> 
</div> 

JS:

$(document).ready(function(){ 
var time = 1000; 
var len = $('.myclass').length; 
var count = 0; 
var fun = setInterval(function(){ 
    count++; 
    if(count>len){ 
    clearInterval(fun); 
    } 
    $('.p'+count).popover('show'); 
    if(count>1){ 
    var pre = count-1; 
    $('.p'+pre).popover('hide'); 
    } 
}, time); 
}); 

谁能帮助?我希望它循环播放,所以它永远播放或至少播放10到20次。

+0

您不能清除的时间间隔,并期望循环继续!而不是清除将计数设置为0.但您还需要记住隐藏最后的弹出窗口。 –

回答

1

修改的JavaScript您的小提琴这样的一部分:

$(document).ready(function(){ 
var time = 1000; 
var len = $('.myclass').length; 
var count = 0; 
var fun = setInterval(function(){ 
    count++; 
    if(count>len){ 

    $('.p'+(count-1)).popover('hide'); 
    count = 1; 
    //clearInterval(fun); 
    } 
    $('.p'+count).popover('show'); 
    if(count>1){ 
    var pre = count-1; 
    $('.p'+pre).popover('hide'); 
    } 
}, time); 
}); 

既然你不清除在该修改的摘录的时间间隔,它会永远运行为你的预期。

+0

谢谢。是否有可能一次显示2个popover? –

+0

您可以执行以下操作:$('。p'+ count).popover('show'); ('。p'+(count + 1))。popover('show');但现在,你需要照顾你的逻辑。 –

1

那是因为你已经添加的行

if(count>len){ 
clearInterval(fun); 
} 

显示他们1周时间计数为3和clearInterval(fun)被称为 终止进一步的呼叫功能fun()后。

1

原创评论:您无法清除间隔并期望循环继续!而不是清除将计数设置为0.但您还需要记住隐藏最后的弹出窗口。

var fun = setInterval(function(){ 
    count++; 
    $('.p' + count).popover('show'); 

    if(count > 1){ 
    $('.p' + (count - 1)).popover('hide'); 
    } 

    if(count > len){ 
    count = 0; 
    } 
}, time); 

这里是一个小提琴:http://jsfiddle.net/89gcqnfm/

1

简单和模运算是你的朋友:

$(document).ready(function(){ 
var time = 1000; 
var eles = $('.myclass'); 
var count = 0; 
var fun = setInterval(function(){ 
    if(eles.length < 1) 
     return (console.log("No elements found!")&&!1) || clearInterval(fun); 

    eles.eq(count%eles.length).popover('hide'); 
    eles.eq(++count%eles.length).popover('show'); 
}, time); 
}); 

https://jsfiddle.net/L2487dfy/

+0

谢谢。我将其他答案标记为正确。别介意。我可以知道为什么有理由使用if和else语句,因为这是一个静态数据,并且总会有数据?我还是新手,学习JS。 –

+0

@ElaineByene,一切都很好。我在那里使用了一个if语句,因为如果页面没有“.myclass”的元素,那么调用'.eq(...)。popover(...)'会在JS代码中抛出一个错误。这个错误不会是一个大问题,但在我看来,做适当的错误检查总是更好。当然,在页面上没有“.myclass”元素的可能性非常低,因为您已经使用该类编写了包含多个元素的页面,但为了最佳实践等原因,我将其放入了该页面。但是,如果您知道这些元素将始终存在,则可以将其删除。 – SpencerD