2009-07-13 5 views
0

J'ai un curseur d'image que j'ai construit pour mon site Web, et je l'ai réglé pour glisser toutes les 3 secondes (sera plus lent après le diagnostic, mais je n'aime pas attendre 10 secondes pour voir ce qui ne va pas). Je l'ai aussi paramétré pour qu'avant de glisser automatiquement, il vérifie si la variable toSlide est définie sur 1 (par défaut) ou non. Lorsque l'utilisateur clique sur un lien suivant/précédent ou sur une certaine diapositive, il définit toSlide à 0.Pourquoi ma variable continue-t-elle à se réinitialiser?

Mon problème est qu'il se réenclenche automatiquement, puis remet le toSlide à 1, et je n'arrive pas à comprendre Pourquoi. Quelqu'un pourrait-t'il m'aider s'il vous plaît?

Vous pouvez voir le code HTML sur my site, et voici le 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 Devrait être "où est-ce que je réinitialise cette variable?" Les variables ne se réinitialisent pas. Les ordinateurs ne font que ce que nous leur disons de faire. – Travis

+0

Donc très vrai. Hélas! – Kerrick

Répondre

9
if (toSlide = 1) { 

C'est une mission pas une comparaison. Vous voulez faire:

if (toSlide === 1) { 

La pleine fonction altérée:

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

Ah, merci! Je suis nouveau avec Javascript, donc je n'ai pas réalisé la différence entre les deux. – Kerrick

2

si (toSlide = 1) devrait être le cas (toSlide == 1)

Cela a mordu beaucoup de gens dans c langages de style

0

La réponse de ces types est la solution. Je ne sais pas si vous l'utilisez déjà, mais avec Firebug il est assez facile de traquer de tels bugs dans le code.

Questions connexes