代码之家  ›  专栏  ›  技术社区  ›  Kerrick

为什么我的变量一直在自我重置?

  •  0
  • Kerrick  · 技术社区  · 16 年前

    我有一个为我的网站制作的图像滑块,我将它设置为每3秒滑动一次(诊断后速度会变慢,但我不喜欢等10秒来看看有什么问题)。我还设置了它,这样在它自动滑动之前,它会检查 toSlide 变量是否设置为1(默认)。当用户单击下一个/上一个链接或某个幻灯片时,它会设置 托利德 到0。

    我的问题是它再次自动滑动,然后设置 托利德 回到1,我不明白为什么。有人能帮我吗?

    您可以在上看到HTML my site ,这里是javascript:

    //Featured Work Image Slider
    // sC = sliderCount
    // sA = slideAmount
    // pH = pictureHeight
    // sT = slideTime
    var sC = 1;
    var pH = 364;
    var sT = 364
    var toSlide = 1;
    function slide(ms) {
        $('#featured-box li').stop().animate({'top':sA},ms);
        $('.sN').css({color:'#598dbe'});
        $('#sN'+sC).css({color:'#464646'});
        $('#fD > div').fadeOut(ms,function(){
            $(this).css({display:'none'});
        });
        $('#fD-'+sC).fadeIn(ms,function(){
            $('#fD-'+sC).css({display:'block'});
        });
        console.log(toSlide);
    }
    function autoSlide(ms) {
        if(sC < 4) {
            sC++;
            sA = -(sC - 1) * pH;
        } else {
            sC = 1;
            sA = 0;
        }
        slide(ms);
        if(toSlide = 1) {
            setTimeout ( "autoSlide(sT)", 3000 );
        }
    }
    $(document).ready(function() {
        setTimeout ( "autoSlide(sT)", 3000 );
        $('#sL').click(function(){
            toSlide = 0;
            if(sC > 1) {
                sC--;
                sA = -(sC - 1) * pH;
            } else {
                sC = 4;
                sA = -3 * pH;
            }
            slide(sT);
            return false;
        });
        $('#sN').click(function(){
            toSlide = 0;
            if(sC < 4) {
                sC++;
                sA = -(sC - 1) * pH;
            } else {
                sC = 1;
                sA = 0;
            }
            slide(sT);
            return false;
        });
        $('.sN').click(function(){
            toSlide = 0;
            var sNid = this.id.split('sN');
            sC = sNid[1];
            sA = -(sC - 1) * pH;
            slide(sT);
            return false;
        });
    });
    
    3 回复  |  直到 16 年前
        1
  •  9
  •   Garry Shutler    16 年前
    if (toSlide = 1) {
    

    这是一个任务,不是比较。你想做的事:

    if (toSlide === 1) {
    

    修改后的完整功能:

    function autoSlide(ms) {
        if(sC < 4) {
            sC++;
            sA = -(sC - 1) * pH;
        } else {
            sC = 1;
            sA = 0;
        }
        slide(ms);
        if(toSlide === 1) {
            setTimeout ( "autoSlide(sT)", 3000 );
        }
    }
    
        2
  •  2
  •   SQLMenace    16 年前

    if(toslide=1)应为if(toslide=1)

    这在C语言中咬了很多人

        3
  •  0
  •   Juri    16 年前

    这些人的答案就是解决办法。我不知道你是否已经用过了,但是 Firebug 在代码中很容易找到这样的错误。