Come faccio a creare dinamicamente un'opzione < > in JavaScript che contiene un'entità HTML (-… «)?

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

Domanda

Vorrei aggiungere un'opzione < > elemento per a < seleziona > elemento in cui l'opzione < > Il testo dell'elemento contiene un'entità HTML: & amp; mdash;

In HTML, il codice sarebbe simile al seguente:

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

Il mio codice JavaScript è simile al seguente:

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

Tuttavia, come vedrai se lo testerai, il & amp; mdash; viene evaso. Ho avuto lo stesso risultato quando ho provato:

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

(Il comportamento osservato era in Internet & nbsp; Explorer 7 ... non ha testato con Firefox, Safari, ecc. - Internet & nbsp; Explorer 7 è l'unico browser di cui ho bisogno al momento.)

È stato utile?

Soluzione

Mi sono appena reso conto che avrei potuto usare un escape JavaScript Unicode:

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

Altri suggerimenti

Non è necessario sfuggire all'entità: funziona in questo modo:

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

text non viene convertita in escape, poiché deve essere presa alla lettera. Se si utilizza innerHTML , le entità vengono convertite in caratteri corrispondenti.

e.options[o].innerHTML = '&mdash; Select One &mdash;';
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top