2012-10-29 24 views
24

Tiêu đề khá rõ ràng: Có sự khác biệt lớn nào giữa innerHTMLcreateTextNode (được sử dụng với Append) để lấp đầy khoảng thời gian bằng văn bản không?Có sự khác biệt lớn nào giữa innerHTML và sử dụng createTextNode để lấp đầy khoảng không?

+0

Không có sự khác biệt. –

+3

Cái gì? createTextNode() là một số magnitudes nhanh hơn innerHTML khi thêm văn bản vào một nút. Xem http://jsperf.com/innerhtml-and-createtextnode – devnull69

+0

@ devnull69 Bài kiểm tra đó dành riêng cho việc thêm nội dung mới nhiều lần (và tính toán bổ sung HTML sẽ tự nhiên chậm hơn). Nhưng chỉ cần thêm văn bản là rất bình đẳng (innerHTML thực sự là một chút nhanh hơn): http://jsperf.com/innerhtml-and-createtextnode/2 – David

Trả lời

29

Tất nhiên. createTextNode sẽ thoát khỏi bất kỳ chuỗi nào và hiển thị chúng như chúng đang có, trong khi innerHTML có thể hiển thị các chuỗi giống như html thành một DOM. Nếu bạn không muốn điều đó (trừ khi bạn chắc chắn văn bản không chứa thẻ không thoát, ví dụ: khi chỉ định trực tiếp chữ), bạn có thể sử dụng textContent (hoặc innerText cho IE).

Tuy nhiên, tôi khuyên bạn nên createTextNode, bởi vì tất cả các trình duyệt đều hỗ trợ như nhau mà không có bất kỳ quirks nào.

+0

"* ... để điền vào một khoảng với văn bản *" –

+3

Có. Nhưng * văn bản * có thể chứa các thẻ vv (bạn không bao giờ biết), vì vậy tôi mong đợi OP sử dụng 'innerText' /' textContent' ít nhất – Bergi

+1

@ Bergi — bạn nên cập nhật câu trả lời của bạn để bao gồm textContent/innerText như một sự thay thế (có lẽ thậm chí còn được ưa thích). – RobG

0

Sự hiểu biết của tôi là một số thao tác của innerHTML loại bỏ tất cả các sự kiện ràng buộc, vì vậy việc sử dụng createTextNode là thích hợp hơn.

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