Come posso ottenere il testo di un tag div utilizzando solo javascript (no jQuery)


92

Ho provato questo ma mostrando "undefined".

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

C'è un modo per ottenere il valore utilizzando un semplice Javascript no jQuery Per favore!

Risposte:


162

Probabilmente vorrai provare textContentinvece di innerHTML.

Dato innerHTMLrestituirà il contenuto DOM come Stringe non esclusivamente il "testo" in div. Va bene se sai che il tuo divcontiene solo testo ma non è adatto per ogni caso d'uso. In questi casi, probabilmente dovrai usare al textContentposto diinnerHTML

Ad esempio, considerando il seguente markup:

<div id="test">
  Some <span class="foo">sample</span> text.
</div>

Otterrai il seguente risultato:

var node = document.getElementById('test'),

htmlContent = node.innerHTML,
// htmlContent = "Some <span class="foo">sample</span> text."

textContent = node.textContent;
// textContent = "Some sample text."

Vedi MDN per maggiori dettagli:


.textContentnon è supportato in IE8 e versioni precedenti, il che lo rende un po 'difficile da usare.
Blender

2
Vero. Indead, innerHTMLnon restituisce solo il contenuto del testo come richiesto nella domanda. Implementerei una soluzione basata sul .textContentrilevamento delle funzionalità con un fallback per <IE9
dhar

4
Sebbene sia una domanda più vecchia, .textContent è la risposta più appropriata per il mondo di oggi.
Donovan

Questo mi aiuta molto di più. Grazie mille.
LogoS

9

Poiché textContentnon è supportato in IE8 e versioni precedenti, ecco una soluzione alternativa:

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

innerText funziona in IE.


0

Puoi usare innerHTML(quindi analizzare il testo da HTML) o usare innerText.

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

console.log(textContentWithHTMLTags, textContent);

innerHTMLed innerTextè supportato da tutti i browser (eccetto FireFox <44) incluso IE6 .


0

In realtà non è necessario chiamare la document.getElementById()funzione per accedere al tuo file div.

Puoi usarlo objectdirettamente da id:

text = test.textContent || test.innerText;
alert(text);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.