【问题标题】:Why does my variable keep resetting itself?为什么我的变量不断自我重置?
【发布时间】:2009-07-13 14:06:26
【问题描述】:

我有一个为我的网站构建的图像滑块,我将它设置为每 3 秒滑动一次(诊断后会变慢,但我不喜欢等待 10 秒来查看问题所在)。我还设置了它,以便在它自动滑动之前,它会检查 toSlide 变量是否设置为 1(默认值)。当用户点击下一个/上一个链接或某个幻灯片时,它会将toSlide 设置为 0。

我的问题是它再次自动滑动,然后将toSlide 设置回 1,我不知道为什么。有人可以帮帮我吗?

您可以在my site 上看到 HTML,这里是 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;
    });
});

【问题讨论】:

  • 哈哈应该是“我在哪里重置这个变量?”变量不会自行重置。计算机只做我们告诉它们做的事情。

标签: javascript jquery html variables


【解决方案1】:
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 );
    }
}

【讨论】:

  • 啊,谢谢!我是 Javascript 新手,所以我没有意识到两者之间的区别。
【解决方案2】:

if(toSlide = 1) 应该是 if(toSlide == 1)

这已经让很多 c 风格语言的人陷入困境

【讨论】:

    【解决方案3】:

    这些家伙的答案就是解决方案。我不知道您是否已经在使用它,但是使用 Firebug 可以很容易地在代码中找到此类错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多