2009-11-19 5 views
15

Quand je dois changer un texte dans un élément span, lequel dois-je utiliser et quelle est la différence:Comment choisir entre innerText ou nodeValue?

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

ou

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

Répondre

12

Pour les éléments avec le contenu du texte, ils sont les même. Voir this MDC article pour plus d'informations sur nodeValue.

De this article:

Si l'élément n'a pas de sous-éléments, juste le texte, il (normalement) a un nœud enfant, accessible en tant que ElemRef.childNodes[0]. Dans un tel cas précis, l'équivalent de normes Web W3C de ElemRef.innerText est ElemRef.childNodes[0].nodeValue.

2
  • nodeValue est W3C recommandation standard.
  • innerText est Internet Explorer spécifique, pas la norme. Et:
    • Ne renvoie pas le contenu de <script> et <style>.
    • Conscience du style, ne renvoie pas le texte des éléments cachés.
    • Sensibilisation de style CSS, il va déclencher une refusion.

En général, ils sont semblables, mais si vous avez besoin de meilleures performances, nodeValue doit être utilisé. Lien pour l'essai de performance: https://jsperf.com/read-innerhtml-vs-innertext-vs-nodevalue-vs-textcontent/13

Questions connexes