Как мне динамически создать <option> в JavaScript, который содержит HTML-объект (- ... «)?
-
06-07-2019 - |
Вопрос
Я бы хотел добавить <option> элемент в <select> элемент, в котором текст <option> элемента содержит HTML-объект:—
В HTML код выглядел бы примерно так:
<select name="test" id="test">
<option value="">— Select One —</option>
</select>
Мой JavaScript-код выглядит примерно так:
function selectOne() {
var e = document.getElementById('test');
e.options[0] = new Option('— Select One —', '');
}
Однако, как вы увидите, если протестируете это, —становится сбежавшим.У меня был тот же результат, когда я попытался:
e.options[o].text = '— Select One —';
(Наблюдаемое поведение было в Internet Explorer 7 ...не тестировался с Firefox, Safari и т.д.-- Internet Explorer 7 - единственный браузер, который мне нужен на данный момент.)
Решение
Я только что понял, что могу использовать escape-код в Unicode:
e.options[0] = new Option('\u2014 Select One \u2014', '');
Другие советы
Вам не нужно экранировать объект - это работает следующим образом:
function selectOne() {
var e = document.getElementById('test');
e.options[0] = new Option('— Select One —', '');
}
text
не экранируется, так как подразумевается буквально. Если вы используете innerHTML
, сущности преобразуются в соответствующие символы.
e.options[o].innerHTML = '— Select One —';