2010-07-29 4 views
0

J'ai ceAi-je raté quelque chose? Mes valeurs ne sont pas stockées dans mon tableau

var selected = [] 
     $('#SelectBoxContainer .DDLs :selected').each(function (i, selected) 
     { 
      alert($(selected).val()); 
      selected[i] = $(selected).val(); 
     }); 

Mon alerte me dit qu'il va dans cette boucle et d'obtenir les valeurs de la boîte de sélection. Pourtant, une fois que tout est dit et fait, il n'y a rien dans mon tableau "sélectionné".

Répondre

5

Votre callback définit une variable locale nommée selected, qui masque la variable selected dans la portée externe. Le selected dans selected[i] = est le selected de function (i, selected), pas le selected de var selected.

Renommez l'une des deux variables pour que cela fonctionne.

+1

bingo! Je n'ai pas pensé à ça! +1 – Reigel

+0

Je n'ai même pas remarqué ça. Je peux voir pourquoi ça ne marche pas maintenant. – chobo2

0

vous ouverture et la fermeture tableau et ensuite faire un peu de magie sans résultat ...

il est tard, mais var selected = [] $. ('# SelectBoxContainer .DDLs: sélectionné) chaque < ..code ....> n'a aucun résultat en ce moment.

essayer tableau de fabrication puis: selected.put ($ ('# SelectBoxContainer))

en d'autres termes, vous n'avez pas ';' après 'var selected = []'

+1

Qu'est-ce que c'est? .. l'OP dit qu'il a alerté les valeurs ... ';' n'est pas vraiment le problème ... – Reigel

+0

par une certaine manière maladroite, il ne dit pas de «manquant; alors que c'est le cas si la ligne suivante commence après []. nous avons une syntaxe pour une raison – fazo

+0

Javascript (** malheureusement **) ne nécessite pas de ';' 's. – deceze

0

Comment vous attendez-vous à travailler avec deux variables nommées «sélectionnées» en même temps? Modifier le nom du second paramètre de votre fonction pour qu'elle n'ombre pas le tableau que vous essayez d'écrire à:

var selected = []; 
$('#SelectBoxContainer .DDLs :selected').each(function (i, item) 
{ 
    selected[i] = $(item).val(); 
}); 

Vous pouvez également utiliser la méthode tableau push au lieu de prendre la peine avec des indices:

selected.push($(item).val()) 
+0

Je pense que les 'indices 'sont destinés à être là pour l'OP. Je suppose .. Parce que de temps en temps ': selected' n'aura pas les mêmes indices .. :) Juste ma conjecture .. – Reigel

+0

@Reigel Non, le' i' est un index de boucle, commençant toujours à 0, toujours en incrémentant de 1 à chaque itération. – deceze

+0

@deceze Oh ?! Je pensais que c'est l'indice de l'élément actuel ... mon mal alors .. – Reigel

Questions connexes