2009-11-19 19 views
15

Quando ho bisogno di cambiare un testo all'interno di un elemento arco, quale dovrei usare e qual è la differenza:Come scegliere tra innerText o nodeValue?

var spnDetailDisplay=document.getElementById('spnDetailDisplay'); 
spnDetailDisplay.innerText=sDetail; 

o

var spnDetailDisplay=document.getElementById('spnDetailDisplay'); 
spnDetailDisplay.childNodes[0].nodeValue=sDetail; 

risposta

12

Per elementi con il contenuto del testo, sono la stesso. Vedere this MDC article per informazioni su nodeValue.

Da this article:

Se l'elemento non ha sottoelementi, solo testo, allora (normalmente) ha un nodo figlio, accede come ElemRef.childNodes[0]. In tal caso, gli standard web W3C equivalenti a ElemRef.innerText sono ElemRef.childNodes[0].nodeValue.

2
  • nodeValue è W3C raccomandazione standard.
  • innerText è Internet Explorer specifico, non lo standard. E:
    • Non restituisce il contenuto di <script> e <style>.
    • Consapevolezza dello stile, non restituisce il testo degli elementi nascosti.
    • Consapevolezza dello stile CSS, attiverà un riflusso.

In generale, essi sono simili, ma se avete bisogno le migliori prestazioni, nodeValue dovrebbe essere usato.

Collegamento per test delle prestazioni: https://jsperf.com/read-innerhtml-vs-innertext-vs-nodevalue-vs-textcontent/13

Problemi correlati