如何在包含HTML实体( - ...«)的JavaScript中动态创建<option>?</option>

时间:2009-01-08 17:55:14

标签: javascript html-entities html-select

我想添加&lt;选项&gt;元素到&lt; select&gt;元素所在的&lt;选项&gt; element的文本包含一个HTML实体:&amp; mdash;

在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;', '');
}

但是,正如您将看到的那样,如果你测试这个,那么&amp; mdash;变得逃脱。我尝试时得到了相同的结果:

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

(观察到的行为是在Internet Explorer 7中...没有使用Firefox,Safari等进行测试 - Internet Explorer 7是我目前唯一需要的浏览器。)

3 个答案:

答案 0 :(得分:18)

我刚刚意识到我可以使用Unicode JavaScript转义:

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

答案 1 :(得分:7)

你不需要逃避实体 - 它的工作原理如下:

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

答案 2 :(得分:2)

text属性未被转义,因为它意味着字面意思。如果您使用innerHTML,则实体会转换为相应的字符。

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