2010-11-29 38 views
1

J'essaie d'afficher 10 étiquettes d'option dans un select. Le notaDt.text() est la valeur actuelle. Donc, si cette valeur correspond à i, l'affichage est "sélectionné".jQuery: résultats de concaténation dans indéfini

var n, select, option;    
for(var i=10; i>=1; i--) { 
    n = notaDt.text(); 
    select = (i == n ? "selected" : ""); 
    option = option + '<option value="' + i + '" ' + select + ' >' + i + '</option>'; 
} 

Le problème est avec l'option option = + ... Il retourne "undefined" quand il est appelé (comme on le voit ci-dessous), mais tout fonctionne bien.

http://img821.imageshack.us/img821/2951/screenshot20101129at749.png

Existe-t-il d'autres méthodes de concaténation je pourrais essayer de ne pas faire passer ce message? Merci!

Répondre

4

Vous devez commencer par une chaîne vide pour option, comme ceci:

var n, select, option = ""; 

Sinon, la première fois que vous concaténer avec option (à ce moment-là, étant undefined) vous obtenez "undefined" pour démarrer votre chaîne hors avec , comme vous obtenez le résultat toString de undefined.

+0

Merci à vous deux. Nick a répondu en premier, donc je vais lui donner la victoire dès que possible. – Norbert

+0

@Norbert, Nick * toujours * répond en premier, mais cette fois il était de 6 secondes! :) –

+0

@Jacob Relkin: Et avec beaucoup de précision :) – Sarfraz

3

Vous devez définir option à une chaîne vide initiale - comme ceci:

var n, select, option = ""; 

Et pourquoi ne pas utiliser += au lieu de option = option + - c'est juste mon avis.

0

Initialement, l'option est indéfinie jusqu'à la première concaténation. Pourquoi ne pas le définir initialement à une chaîne vide?

var n, select; 
var option = ""; 
for(var i=10; i>=1; i--) { 
    n = notaDt.text(); 
    select = (i == n ? "selected" : ""); 
    option = option + '<option value="' + i + '" ' + select + ' >' + i + '</option>'; 
}