2008-10-10 12 views

Répondre

10
var sel = document.getElementById("my_dropdown"); 

//get the selected option 
var selectedText = sel.options[sel.selectedIndex].text; 

//or get the first option 
var optionText = sel.options[0].text; 

//or get the option with value="1" 
for(var i=0; i<sel.options.length; i++){ 
    if(sel.options[i].value == "1"){ 
     var valueIsOneText = sel.options[i].text; 
    } 
} 
+0

cela suppose qu'il y a une étiquette d'identification sur la boîte de sélection. – Rontologist

+0

Ce code s'applique à l'option sélectionnée, bien que l'attribut .text fonctionne pour toutes les options (sélectionnées ou non) une fois que vous les avez obtenues dans la liste des options []. –

+0

@Rontologist - Il y a un identifiant @Adam - mis à jour – Liam

1

Le texte affiché est un nœud enfant du nœud d'option. Vous pouvez utiliser:

myOptionNode.childNodes[0]; 

d'y accéder, en supposant que le nœud de texte est la seule chose à l'intérieur de l'option (et non d'autres balises).

EDIT: Ah oui, comme d'autres ont mentionné, j'ai complètement oublié:

myOptionNode.text; 
+0

Est-ce que vous pensez que la tente serait dans une option? -) Il est tout simplement invalide de mettre autre chose à l'intérieur! -) – roenving

+0

C'est vrai, c'est invalide, mais je ne l'avais pas testé, donc je ne suis pas sûr de ce qui se passerait si Par exemple, vous mettez un dans une option. Les navigateurs vous permettront de vous en tirer avec des choses bancales parfois. –

4
var mySelect = document.forms["my_form"].my_dropdown; 
// or if you select has a id 
var mySelect = document.getElementById("my_dropdown"); 
var text = mySelect.options[mySelect.selectedIndex].text; 
+0

Encore une fois, l'exemple de code suppose ici qu'il veut l'option sélectionnée. Son exemple a seulement une option, donc cela fonctionnera, mais le cas général serait de fournir un autre index aux options []. –

+0

bien c'est vrai mais le sujet de départ n'a pas défini la situation initiale. J'ai supposé qu'il voulait obtenir le texte de l'option sélectionnée en cours. S'il veut le texte d'une option et ne connaît que la valeur, il devra utiliser une boucle. La méthode d'accès est la même. –

+0

L'hypothèse est correcte: je voulais l'option sélectionnée, mais j'aurais dû le dire. – Marcus

0

Si vous utilisez Prototype, vous pouvez obtenir à elle comme ceci:

$$('#my_dropdown option[value=1]').each(function(elem){ 
       alert(elem.text); 
      }); 

Ce qui précède utilise un sélecteur CSS qui indique trouver tous option étiquettes avec valeur = "1" qui sont à l'intérieur de l'élément qui a id = "my_dropdown".

1

En supposant que vous ayez légèrement modifié votre code pour avoir un identifiant/classe sur le et que vous utilisiez jQuery, vous pourriez avoir quelque chose comme: Il apparaîtra une alerte pour chaque option avec le texte de l'option. Vous ne voudrez probablement pas d'alerte pour tout le texte, mais il illustre comment obtenir le texte en premier lieu:

 
$('select#id option').each(function() { 
    alert($(this).text()); 
}); 

Si vous utilisez une classe au lieu d'une carte d'identité, alors vous avez juste pour changer le 'select # id' en 'select.class'. Si vous ne souhaitez pas ajouter de classe/ID, il existe d'autres moyens d'accéder à la sélection.

Je pars trouver ces chemins si vous voulez suivre cette route comme une activité pour le lecteur.

2

En supposant que vous voulez que le sélectionné l'option de texte:

var select = document.getElementById('my_dropdown'); 
for(var i = 0; i < select.options.length; i++) { 
    if(select.options[i].selected) { 
     break; 
    } 
} 
var selectText = select.options[i].text; 

Dans Prototype:

var selectText = $$('#my_dropdown option[selected]')[0].text; 

Edit: Et jQuery pour bien être complet (en supposant le soutien du sélecteur CSS jQuery est à peu près équivalente à celle de prototypes):

var selectText = $('#my_dropdown option[selected]').get(0).text; 
Questions connexes