2012-04-29 36 views

Trả lời

108

Có thể bạn sẽ muốn thử textContent thay vì innerHTML.

Cho innerHTML sẽ trả về nội dung DOM dưới dạng String và không chỉ là "văn bản" trong div. Sẽ tốt nếu bạn biết rằng div chỉ chứa văn bản nhưng không phù hợp nếu mọi trường hợp sử dụng. Đối với những trường hợp này, có thể bạn sẽ phải sử dụng textContent thay vì innerHTML

Ví dụ, xem xét các đánh dấu sau:

<div id="test"> 
    Some <span class="foo">sample</span> text. 
</div> 

Bạn sẽ nhận được kết quả sau:

var node = document.getElementById('test'), 

htmlContent = node.innerHTML, 
// htmlContent = "Some <span class="foo">sample</span> text." 

textContent = node.textContent; 
// textContent = "Some sample text." 

Xem MDN để biết thêm chi tiết:

+0

'.textContent' không được hỗ trợ trong IE8 trở xuống, điều này khiến cho việc sử dụng phần mềm khó sử dụng. – Blender

+2

Đúng. Indead, 'innerHTML' không chỉ trả lại nội dung văn bản theo yêu cầu trong câu hỏi. Tôi muốn thực hiện một giải pháp dựa trên phát hiện tính năng '.textContent' với một dự phòng cho dhar

+3

Mặc dù một câu hỏi cũ hơn, _.textContent_ là câu trả lời phù hợp hơn cho thế giới ngày nay. – Donovan

1

textContent không được hỗ trợ trong IE8 trở lên, đây là một cách giải quyết:

var node = document.getElementById('test'), 
var text = node.textContent || node.innerText; 
alert(text); 

innerText làm việc trong IE.

Các vấn đề liên quan