Comment choisir entre innerText ou nodeValue?
Question
Quand je dois changer un texte dans un élément span, lequel dois-je utiliser et quelle est la différence:
var spnDetailDisplay=document.getElementById('spnDetailDisplay');
spnDetailDisplay.innerText=sDetail;
ou
var spnDetailDisplay=document.getElementById('spnDetailDisplay');
spnDetailDisplay.childNodes[0].nodeValue=sDetail;
La solution
Pour les éléments avec le contenu du texte, ils sont les mêmes. Voir cet article MDC des informations sur nodeValue
.
De cet 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 ce cas précis, les standards Web du W3C équivalent deElemRef.innerText
estElemRef.childNodes[0].nodeValue
.
Autres conseils
- nodeValue est W3C recommandation standard.
- innerText est Internet Explorer spécifique, et non la norme. Et:
- Ne renvoie le contenu de
<script>
et<style>
. - prise de conscience de style, ne renvoie pas le texte des éléments cachés.
- prise de conscience de style CSS, il déclenchera une refusion.
- Ne renvoie le contenu de
Cependant, dans les versions de tous les principaux navigateurs à partir de Mars 2016 innerText est pris en charge.
En général, ils sont similaires, mais si vous avez besoin de meilleures performances, nodeValue doit être utilisé.
Lien pour le test de performance: https: // jsperf.com/read-innerhtml-vs-innertext-vs-nodevalue-vs-textcontent/13