Как мне динамически создать <option> в JavaScript, который содержит HTML-объект (- ... «)?

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

Вопрос

Я бы хотел добавить <option> элемент в <select> элемент, в котором текст <option> элемента содержит HTML-объект:—

В HTML код выглядел бы примерно так:

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

Мой JavaScript-код выглядит примерно так:

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

Однако, как вы увидите, если протестируете это, —становится сбежавшим.У меня был тот же результат, когда я попытался:

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

(Наблюдаемое поведение было в 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 = '&mdash; Select One &mdash;';
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top