2009-01-08 58 views
9

我想>元素添加<選項,其中<選項>元素的文本包含HTML實體<選擇>元素:& MDASH;如何在包含HTML實體( - ...«)的JavaScript中動態創建<option>?

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

但是,你會看到,如果你測試這一點,& MDASH;變得逃脫了。我有同樣的結果,當我試圖:

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

(觀測到的行爲在互聯網  Explorer 7中......沒有與Firefox,Safari等測試 - 互聯網  Explorer 7的是我唯一需要的瀏覽器。此刻)

+0

有沒有必要逃避「 - 」的原因? – 2009-01-08 18:08:43

+0

我不知道另一種方式(輕鬆地)添加mdash。如果它是一個簡單的n-dash ...我只是使用鍵盤短劃線/減號鍵。我想我應該用這個例子來代替。 – 2009-01-08 18:11:46

回答

16

我才意識到我可以用一個統一的JavaScript逃逸:

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

你不需要逃離實體 - 它的工作原理是這樣的:

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

正確 - 但我在考慮任何HTML實體...就像一個« – 2009-01-08 18:13:13

1

text財產並沒有得到未轉義,因爲它是從字面上理解的。如果您使用innerHTML,則實體會轉換爲相應的字符。

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