Làm cách nào để lấy văn bản của thẻ div chỉ bằng javascript (không có jQuery)


92

Tôi đã thử điều này nhưng hiển thị "không xác định".

function test() {
var t = document.getElementById('superman').value;
alert(t); }

Có cách nào để lấy giá trị bằng cách sử dụng Javascript đơn giản không có jQuery Xin vui lòng!

Câu trả lời:


162

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

Given innerHTMLsẽ trả về nội dung DOM dưới dạng một Stringvà không chỉ là "văn bản" trong div. Sẽ tốt nếu bạn biết rằng của bạn divchỉ 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 textContentthay vìinnerHTML

Ví dụ: xem xét đá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:


.textContentkhông được hỗ trợ trong IE8 trở xuống, điều này làm cho nó hơi khó sử dụng.
Máy xay sinh tố

2
Thật. Indead, innerHTMLkhông chỉ trả về nội dung văn bản như được yêu cầu trong câu hỏi. Tôi sẽ triển khai một giải pháp dựa trên .textContentphát hiện tính năng với dự phòng cho <IE9
dhar

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

Điều này giúp tôi rất nhiều. Cảm ơn rât nhiều.
LogoS

9

textContentkhông được hỗ trợ trong IE8 trở lên, đây là một giải pháp thay thế:

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

innerText không hoạt động trong IE.


0

Bạn có thể sử dụng innerHTML(sau đó phân tích cú pháp văn bản từ HTML) hoặc sử dụng innerText.

let textContentWithHTMLTags = document.querySelector('div').innerHTML; 
let textContent = document.querySelector('div').innerText;

console.log(textContentWithHTMLTags, textContent);

innerHTMLinnerTextđược hỗ trợ bởi tất cả các trình duyệt (ngoại trừ FireFox <44) bao gồm cả IE6 .


0

Trên thực tế, bạn không cần phải gọi document.getElementById()chức năng để có quyền truy cập vào của bạn div.

Bạn có thể sử dụng điều này objecttrực tiếp bằng cách id:

text = test.textContent || test.innerText;
alert(text);
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.