2010-09-02 9 views
0

J'ai le code ci-dessous ...JS pour problème de boucle

var ToggleButtons=new Array(); 
ToggleButtons[0] = "#Click"; 
ToggleButtons[1] = "#DoubleClick"; 
ToggleButtons[2] = "#Drag"; 
ToggleButtons[3] = "#RightClick"; 
ToggleButtons[4] = "#MiddleClick"; 


function SelectButton(id) { 
    var x = 0; 
    for (x = 0; x++; x < ToggleButtons.length) { 
     if (x == id) { 
      $(ToggleButtons[x]).addClass('ToggleButtonSelected'); 
     } else { 
      $(ToggleButtons[x]).removeClass('ToggleButtonSelected'); 
     } 
    } 
} 

cependant, quand je l'appelle SelectButton (n) avec n = 0> 4, il frappe la ligne() et sauts directement à l'accolade de fermeture.

sur le pour() la ligne avant qu'il exécute, montre Firebug (par exemple)

id=2 
ToggleButtons.length=5 
x=0 

J'ai le sentiment que je me manque quelque chose d'évident, mais je ne suis pas sûr de ce que,

Un grand merci

Répondre

2

Les parties de la boucle for sont à l'envers, il devrait être initialisation, conditi sur, puis incrémentation:

for (x = 0; x < ToggleButtons.length; x++) 
+0

Merci - j'ai les yeux fixés à ce pendant 10 minutes – Basic

4

Votre for() ordre est embrouillée, ceci:

for (x = 0; x++; x < ToggleButtons.length) { 

Si b e:

for (x = 0; x < ToggleButtons.length; x++) { 

Vous pouvez utiliser .toggleClass("class", bool) pour raccourcir un peu si, comme ceci:

function SelectButton(id) { 
    for (var x = 0; x < ToggleButtons.length; x++) { 
     $(ToggleButtons[x]).toggleClass('ToggleButtonSelected', x === id); 
    } 
} 

Une approche encore mieux serait de mettre en cache les sélecteurs de sorte qu'ils ne sont pas exécutés chaque temps, comme ceci:

var ToggleButtons = [$("#Click"), $("#DoubleClick"), $("#Drag"), $("#RightClick"), $("#MiddleClick")]; 

function SelectButton(id) { 
    $(".ToggleButtonSelected").removeClass('ToggleButtonSelected'); 
    ToggleButtons[id].addClass('ToggleButtonSelected'); 
} 
1

Modifier cette ligne:

for (x = 0; x++; x < ToggleButtons.length) { 

à ceci:

for (x = 0; x < ToggleButtons.length; x++) { 
+0

Zut. TY. J'ai attribué à Douglas comme a) il en a plus besoin et b) il a expliqué sa réponse – Basic