2009-01-08 17 views
9

Tôi muốn thêm một tùy chọn < > yếu tố để một < chọn > yếu tố nơi văn bản < tùy chọn > phần tử chứa một thực thể HTML: & mdash;Làm cách nào để tự động tạo một <option> trong JavaScript có chứa thực thể HTML (- ... «)?

Trong HTML, mã sẽ trông như thế này:

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

My JavaScript trông như thế này:

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

Tuy nhiên, như bạn sẽ thấy nếu bạn kiểm tra này, & mdash; trở nên trốn thoát. Tôi đã có kết quả tương tự khi tôi đã cố gắng:

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

(hành vi quan sát được trong Internet Explorer 7   ... không thử nghiệm với Firefox, Safari, vv - Internet   Explorer 7 là trình duyệt duy nhất tôi cần . tại thời điểm này)

+0

có lý do nào "-" phải được thoát không? –

+0

Tôi không biết cách nào khác để (dễ dàng) thêm mdash. Nếu nó là một n-dash đơn giản ... Tôi chỉ cần sử dụng phím dấu gạch ngang/phím tắt. Tôi đoán tôi nên sử dụng ví dụ có thể là «thay vào đó. –

Trả lời

16

tôi chỉ nhận ra tôi có thể sử dụng một lối thoát Unicode JavaScript:

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

Cả giải pháp này và giải pháp của Chetan đều hoạt động. Nó chỉ phụ thuộc vào phong cách bạn thích. Đối với tôi, tôi thích đặt giá trị một lần thay vì quay trở lại và thay đổi nó sau đó như trong giải pháp của Chetan. –

6

Bạn không cần phải thoát khỏi các thực thể - nó hoạt động như thế này:

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

True - nhưng tôi đã suy nghĩ về bất kỳ thực thể HTML ... như một « –

+0

Điều này làm việc cho bất kỳ thực thể HTML, mặc dù nó có thể chạy vào vấn đề mã hóa. Trình tự thoát unicode của bạn có lẽ là giải pháp di động nhất. –

1

text thuộc tính không bị thoát, vì nó có nghĩa là phải được thực hiện theo nghĩa đen. Nếu bạn sử dụng innerHTML, các thực thể được chuyển đổi thành các ký tự tương ứng.

e.options[o].innerHTML = '&mdash; Select One &mdash;'; 
Các vấn đề liên quan