如何动态创建<;选项>;在包含HTML实体(—;…«;)的JavaScript中?

如何动态创建<;选项>;在包含HTML实体(—;…«;)的JavaScript中?,javascript,html-entities,html-select,Javascript,Html Entities,Html Select,我想在元素文本包含HTML实体的元素中添加一个元素:&mdash 在HTML中,代码如下所示: <select name="test" id="test"> <option value="">&mdash; Select One &mdash;</option> </select> function selectOne() { var e = document.getElementById('test'); e.o

我想在元素文本包含HTML实体的元素中添加一个元素:&mdash

在HTML中,代码如下所示:

<select name="test" id="test">
    <option value="">&mdash; Select One &mdash;</option>
</select>
function selectOne() {
  var e = document.getElementById('test');
  e.options[0] = new Option('&mdash; Select One &mdash;', '');
}
function selectOne() {
      var e = document.getElementById('test');
      e.options[0] = new Option('— Select One —', '');
}
但是,您将看到,如果您对此进行测试,&mdash;他逃走了。当我尝试时,我得到了同样的结果:

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

(观察到的行为出现在InternetExplorer 7中……没有使用Firefox、Safari等进行测试——InternetExplorer 7是目前我唯一需要的浏览器。)

您不需要退出实体-它的工作原理如下:

<select name="test" id="test">
    <option value="">&mdash; Select One &mdash;</option>
</select>
function selectOne() {
  var e = document.getElementById('test');
  e.options[0] = new Option('&mdash; Select One &mdash;', '');
}
function selectOne() {
      var e = document.getElementById('test');
      e.options[0] = new Option('— Select One —', '');
}

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

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

text
property不会被取消scape,因为它是按字面意思理解的。如果使用
innerHTML
,实体将转换为相应的字符

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

是否有必须转义“-”的原因?我不知道(轻松)添加mdash的其他方法。如果它是一个简单的n-破折号。。。我就用键盘上的破折号/减号键。我想我应该用一个«的例子来代替。是的——但我考虑的是任何HTML实体。。。像«一样,这对任何HTML实体都有效,尽管它可能会遇到编码问题。您的unicode转义序列可能是最可移植的解决方案。此解决方案和Chetan的解决方案都有效。这取决于你喜欢哪种风格。对我来说,我更喜欢设置一次值,而不是像Chetan的解决方案那样返回并在以后更改它。