首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用jquery循环a滑雪板

如何使用jquery循环a滑雪板
EN

Stack Overflow用户
提问于 2012-12-15 10:25:13
回答 1查看 365关注 0票数 1

基本上,我正在尝试使用jquery创建幻灯片显示。在这里,幻灯片导航工作良好,但滑轨循环不起作用。

我在这里试过了我的小提琴

我的剧本是:

代码语言:javascript
复制
 var currIndex = -1;

 function slideshow(slideshowId){
     var len=$("ul#"+slideshowId+" li.slides").length;
     currIndex = (currIndex + 1) % len;
     $("ul#"+slideshowId+" li.slides").hide();
     $("ul#"+slideshowId+" li.slide"+currIndex+"").fadeIn();     
 }

 function slidepagenation(slideshowId,slideno){    
        $("ul#"+slideshowId+" li.slides").hide();
        $("ul#"+slideshowId+" li.slide"+slideno+"").fadeIn();
        currIndex = slideno;
 }

var tshone = 0;
var tshtwo = 0;

    slideshow('slideshow-one');
    tshone =setInterval(slideshow('slideshow-one'), 500);
     slideshow('slideshow-two');
    tshtwo =setInterval(slideshow('slideshow-two'), 500);

    $('ul.slideshow-one li a').click(function(){
        clearInterval(tshone);
        var element = $(this);
        var slideshowid=element.parent().parent().attr('class');
        var slideno = $("ul.slideshow-one li a").index($(this));
        slidepagenation(slideshowid,slideno); 
    });

    $('ul.slideshow-two li a').click(function(){
        clearInterval(tshtwo);
        var element = $(this);
        var slideshowid=element.parent().parent().attr('class');
        var slideno = $("ul.slideshow-two li a").index($(this));
        slidepagenation(slideshowid,slideno); 
    });

​我的html在这里:

代码语言:javascript
复制
<ul class="slideshow" id="slideshow-one">
    <li class="slides slide0" style="display:block">
    Slide one
    </li>
    <li class="slides slide1">
    Slide two
    </li>
    <li class="slides slide2">
    Slide three
    </li>     
</ul>
<div class="full-length clearfix txt-center">
<ul class="slideshow-one">
    <li><a>1</a></li>
    <li><a>2</a></li> 
    <li><a>3</a></li>     
</ul>
</div>
<br><br>
<ul class="slideshow" id="slideshow-two">
    <li class="slides slide0" style="display:block">
    Slide one
    </li>
    <li class="slides slide1">
    Slide two
    </li>    
</ul>
<div class="full-length clearfix txt-center">
<ul class="slideshow-two">
    <li><a>1</a></li>
    <li><a>2</a></li>    
</ul>
</div>

EN

回答 1

Stack Overflow用户

发布于 2012-12-15 10:29:14

setInterval接受一个在间隔上运行的函数,但是您给它undefined

代码语言:javascript
复制
tshone =setInterval(slideshow('slideshow-one'), 500);

...because这一行调用slideshow并将其返回值传递给setInterval。因为slideshow不返回值,所以调用它的结果是undefined

相反:

代码语言:javascript
复制
tshone =setInterval(function() {
    slideshow('slideshow-one');
}, 500);

现在我们创建一个函数并将其传递给setInterval。该函数每隔半秒钟调用一次slideshow

还请注意,您只使用one currIndex,但是您尝试将其用于两种不同的幻灯片。那是行不通的。我建议完全消除currIndex,只需从DOM中找出哪个幻灯片是活动的。就像这样:

代码语言:javascript
复制
function slideshow(slideshowId){
    var slideShow = $("ul#"+slideshowId);
    var slide;

    slide = slideShow.find("li.slides:visible");
    if (slide.length > 1) {
        slide.hide();
        slide = $();
    }
    slide = slide.hide().nextAll("li.slides").first();
    if (slide.length == 0) {
        slide = slideShow.find("li.slides").first();
    }
    slide.fadeIn();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13891367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档