Thay đổi giá trị textNode


91

Có cách nào để thay đổi giá trị của DOM textNode trong trình duyệt web không?

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

Để 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ư đã 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.


Ví dụ về HTML và những gì bạn muốn thay đổi? Bạn có muốn sử dụng javascript không?
shahkalpesh

Trong quá trình nghiên cứu về câu hỏi tương tự, tôi phát hiện ra rằng Mạng nhà phát triển Mozilla đưa ra thông báo bảo mật về innerHTMLviệc sử dụng và ủng hộ textContentviệc sử dụng . Sử dụng textContenthoạt động tốt cho tôi.
Joël

Câu trả lời:


130

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

node.nodeValue="new value";

Ghi chú:

innerText (và có khả năng textContent) sẽ trả về / đặt cả văn bản của nút hiện tại và tất cả các nút con con, và do đó 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ề điểm 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 trên cả các nút #Element VÀ #text.
Crescent Fresh

4
Ngoài ra còn có 'data' như một từ đồng nghĩa ngắn gọn của 'nodeValue' trên Text (cũng như CDATASection và Comment).
bobince

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

8
@petermeissner: Điều này trả lời câu hỏi một cách hoàn hảo, vì vậy phản đối của bạn là hoàn toàn không có cơ sở.
Tim Down

1
Không phải lúc nào cũng hoạt động .. "Khi nodeValue được xác định là null, việc thiết lập nó không có tác dụng." .. Tôi đã chọn trong trường hợp đó cho "textContent" ... cài đặt nó cũng cập nhật giá trị cho "innerText"
foobored

-10

Tôi tin rằng innerHTML được sử dụng cho việc này ... Sau đó, một lần nữa, đó không phải là W3C được chấp thuận ... nhưng nó hoạt động ...

node.innerHTML="new value";

1
+1 cho một giải pháp hoạt động. nodeValue không cho phép tôi thay thế nội dung của phần tử
petermeissner

3
Bạn không bao giờ nên sử dụng innerHTMLvì nó coi mã là văn bản cả khi đọc viết.
John

7
@petermeissner: Điều này không trả lời câu hỏi. Bạn phải đặt nodeValuetrên nút văn bản, không phải phần tử cha của nó.
Tim Down
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.