Comment créer dynamiquement une < option > en JavaScript contenant une entité HTML (& # 8212; & # 8230; & # 171;)?

StackOverflow https://stackoverflow.com/questions/425234

Question

Je souhaite ajouter une < option > élément à un < sélectionnez > élément où l'option < > Le texte de l'élément contient une entité HTML: & amp; mdash;

En HTML, le code ressemblerait à ceci:

<select name="test" id="test">
    <option value="">&mdash; Select One &mdash;</option>
</select>

Mon code JavaScript ressemble à ceci:

function selectOne() {
  var e = document.getElementById('test');
  e.options[0] = new Option('&mdash; Select One &mdash;', '');
}

Cependant, comme vous le verrez si vous testez cela, le fichier & amp; mdash; devient échappé. J'ai eu le même résultat quand j'ai essayé:

e.options[o].text = '&mdash; Select One &mdash;';

(Le comportement observé était lié à Internet & nbsp; Explorer 7 ... n'a pas été testé avec Firefox, Safari, etc. - Internet & nbsp; Explorer 7 est le seul navigateur dont j'ai besoin pour le moment.)

Était-ce utile?

La solution

Je viens de me rendre compte que je pourrais utiliser une évasion JavaScript Unicode:

e.options[0] = new Option('\u2014 Select One \u2014', '');

Autres conseils

Vous n'avez pas besoin d'échapper à l'entité - cela fonctionne comme suit:

function selectOne() {
      var e = document.getElementById('test');
      e.options[0] = new Option('— Select One —', '');
}
La propriété

text n'est pas non plus échappée, car elle est censée être prise à la lettre. Si vous utilisez innerHTML , les entités sont converties en caractères correspondants.

e.options[o].innerHTML = '&mdash; Select One &mdash;';
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top