2009-11-19 17 views
15

Khi tôi cần phải thay đổi một văn bản trong một phần tử span, cái nào tôi nên sử dụng và sự khác biệt là gì:Làm cách nào để chọn giữa innerText hoặc nodeValue?

var spnDetailDisplay=document.getElementById('spnDetailDisplay'); 
spnDetailDisplay.innerText=sDetail; 

hoặc

var spnDetailDisplay=document.getElementById('spnDetailDisplay'); 
spnDetailDisplay.childNodes[0].nodeValue=sDetail; 

Trả lời

12

Đối với các yếu tố với nội dung văn bản, họ là những tương tự. Xem this MDC article để biết thông tin về số nodeValue.

Từ this article:

Nếu phần tử không có phần tử con, chỉ cần văn bản, sau đó nó (thường) có một nút con, truy cập như ElemRef.childNodes[0]. Trong trường hợp chính xác như vậy, các tiêu chuẩn web của W3C tương đương với ElemRef.innerTextElemRef.childNodes[0].nodeValue.

2
  • nodeValue là tiêu chuẩn khuyến cáo của W3C.
  • innerTextInternet Explorer cụ thể, không phải tiêu chuẩn. Và:
    • Không trả về nội dung <script><style>.
    • Nhận thức về phong cách, không trả lại văn bản của các yếu tố bị ẩn.
    • Nhận thức về kiểu dáng CSS, nó sẽ kích hoạt bản chỉnh sửa.

Nói chung, họ là tương tự, nhưng nếu bạn cần hiệu suất tốt nhất, nodeValue nên được sử dụng.

Liên kết để kiểm tra hiệu suất: https://jsperf.com/read-innerhtml-vs-innertext-vs-nodevalue-vs-textcontent/13