2009-07-13 2 views
0

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

Моя проблема заключается в том, что она автоматически автофокусируется, а затем устанавливает toSlide назад на 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; 
    }); 
}); 
+0

Haha Должен быть «где я могу сбросить эту переменную?» Переменные не сбрасываются. Компьютеры делают только то, что мы им говорим. – Travis

+0

Так очень верно. Увы! – Kerrick

ответ

9
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); 
    } 
} 
+0

А, спасибо! Я новичок в Javascript, поэтому я не понял разницы между ними. – Kerrick

2

если (toSlide = 1) должно быть, если (toSlide == 1)

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

0

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

Смежные вопросы