Come faccio a creare dinamicamente un'opzione < > in JavaScript che contiene un'entità HTML (-… «)?
-
06-07-2019 - |
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="">— Select One —</option>
</select>
Il mio codice JavaScript è simile al seguente:
function selectOne() {
var e = document.getElementById('test');
e.options[0] = new Option('— Select One —', '');
}
Tuttavia, come vedrai se lo testerai, il & amp; mdash; viene evaso. Ho avuto lo stesso risultato quando ho provato:
e.options[o].text = '— Select One —';
(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.)
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 —', '');
}
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 = '— Select One —';