2009-03-25 43 views
63

Có cách nào để thay đổi giá trị của một mã văn bản DOM trong trình duyệt web không?Thay đổi giá trị văn bảnNode

Tôi đặc biệt muốn xem liệu tôi có thể thay đổi nút hiện tại, thay vì tạo một hình mới.

Để làm rõ, tôi cần làm điều này với Javascript. Tất cả văn bản trong trình duyệt được lưu trữ trong #textNodes là con của các nút HTML khác, nhưng không thể có các nút con của riêng chúng.

Như được trả lời bên dưới, nội dung có thể được thay đổi bằng cách đặt thuộc tính nodeValue của các Đối tượng này.

+0

Ví dụ về HTML & những gì bạn muốn thay đổi? Bạn có muốn làm điều đó bằng cách sử dụng javascript? – shahkalpesh

Trả lời

94

Nếu bạn có một nút cụ thể (loại #text) và muốn thay đổi giá trị của nó bạn có thể sử dụng nodeValue tài sản:

node.nodeValue="new value"; 

Lưu ý:

innerText (và thể textContent) sẽ trả về/đặt cả nút hiện tại và tất cả văn bản của nút con cháu, và vì vậy có thể không phải là hành vi bạn muốn/mong đợi.

+1

Có, nodeValue là hoàn hảo cho việc này. innerText và textContent khác nhau về vấn đề này: IE (người tạo innerText) không hỗ trợ nó trên các nút #text (vì không có nút con nào để textify), trong khi textContent được sử dụng cho cả hai nút #Element AND #text. –

+4

Ngoài ra còn có ‘dữ liệu’ làm từ đồng nghĩa ngắn cho ‘nodeValue’ trên Văn bản (cũng như CDATASection và Comment). – bobince

+0

nodeValue là cái tôi cần. Vì một lý do nào đó, tôi nghĩ nó chỉ đọc, nhưng dường như hoạt động trên FF3 và IE7. Cảm ơn! – levik

-4

Tôi tin rằng innerHTML được sử dụng cho điều này ... Sau đó, một lần nữa, đó là không W3C đã được phê duyệt ... nhưng nó hoạt động ...

node.innerHTML="new value"; 
+1

+1 cho giải pháp làm việc. nodeValue không cho phép tôi thay thế nội dung của phần tử – petermeissner

+3

Bạn nên * không bao giờ * sử dụng 'innerHTML' vì nó xử lý mã dưới dạng văn bản cả trong việc đọc * và * viết. – John

+2

@petermeissner: Điều này không trả lời câu hỏi. Bạn phải đặt 'nodeValue' trên nút văn bản, không phải là phần tử cha của nó. –

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