2009-02-02 2 views
2

J'ai sortie HTML semblable à ceci:Comment puis-je obtenir la valeur de texte non tronquée d'un élément <OPTION>?

<select> 
<option value="1">Item1 </option> 
</select> 

Comment puis-je utiliser JavaScript pour obtenir la valeur « Item1 » (avec l'espace) plutôt que « Item1 »?

Dans Internet Explorer, toutes les propriétés que j'ai essayées, par ex. texte, innerHTML, données, nodeValue retour "Item1" au lieu de "Item1".

Fait intéressant dans Firefox, textContent et innerHTML retourner la valeur alors que texte non tronquée renvoie la valeur tronquée.

Répondre

2

Désolé, l'analyseur d'IE jette en effet les espaces de fin dans l'option <>. Curieusement, si vous assignez une chaîne avec des espaces de fin à innerHTML IE parvient à se souvenir de l'un d'entre eux. Probablement préférable de ne pas compter sur.

Normalement, si vous voulez des espaces de fin visibles (dans n'importe quel navigateur), vous devez utiliser un caractère d'espace insécable (par exemple, & # 160; référence de caractère).

+0

C'est ennuyeux. Nous avions essayé d'éviter la troncation/l'effacement des données dans le système, mais cela signifie que nous devrons repenser cette approche. – tjrobinson

+0

Eh bien, le * data * réel devrait être dans l'attribut 'value' bien sûr - le contenu 'text' est seulement pour le show. – bobince

+0

Bon point, bien que plus facile à dire qu'à faire dans ce cas particulier! – tjrobinson

0

Vous ne devriez jamais vous attendre à ce que l'espacement soit interprété littéralement. Peut-être votre sortie devrait être rendue comme: <option value="1">Item1&nbsp;</option>

P.S .: Il dit que le HTML est ignoré dans un bloc de code, mais mon entité est échappée ici. (Markdown)

+0

Pour développer ce concept, le texte d'un élément d'option n'a jamais été conçu pour être utilisé en tant que donnée - c'est à cela que sert l'attribut value. Il semblerait que si vous utilisez le texte pour n'importe quelle logique, vous utilisez éventuellement l'attribut de valeur d'une manière incorrecte. – ken

+0

Je suis d'accord, très succinctement mis. – Cerebrus

Questions connexes