Почему моя переменная продолжает сбрасывать себя? - PullRequest
0 голосов
/ 13 июля 2009

У меня есть слайдер изображений, который я построил для своего веб-сайта, и он настроен на ползунок каждые 3 секунды (будет медленнее после диагностики, но я не люблю ждать 10 секунд, чтобы увидеть, что не так). Я также установил его так, чтобы перед автоматическим скольжением он проверял, установлена ​​ли переменная toSlide в 1 (по умолчанию) или нет. Когда пользователь нажимает на следующую / предыдущую ссылку или на определенный слайд, он устанавливает toSlide в 0.

Моя проблема в том, что он снова автоматически скользит, затем устанавливает toSlide обратно на 1, и я не могу понять, почему. Кто-нибудь может мне помочь, пожалуйста?

Вы можете увидеть 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;
    });
});

Ответы [ 3 ]

9 голосов
/ 13 июля 2009
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 голосов
/ 13 июля 2009

if (toSlide = 1) должно быть if (toSlide == 1)

Это укусило многих людей на языках стиля c

0 голосов
/ 13 июля 2009

Ответ этих парней - решение. Я не знаю, используете ли вы его уже, но с Firebug довольно легко отследить такие ошибки в коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...