Les exemples ci-dessous font référence à l'extrait HTML suivant:
<div id="test">
Warning: This element contains <code>code</code> and <strong>strong language</strong>.
</div>
Le nœud sera référencé par le JavaScript suivant:
var x = document.getElementById('test');
element.innerHTML
Définit ou obtient la syntaxe HTML décrivant les descendants de l'élément
x.innerHTML
// => "
// => Warning: This element contains <code>code</code> and <strong>strong language</strong>.
// => "
Cela fait partie des spécifications d' analyse et de sérialisation DOM du W3C . Notez que c'est une propriété d' Elementobjets.
node.innerText
Définit ou récupère le texte entre les balises de début et de fin de l'objet
x.innerText
// => "Warning: This element contains code and strong language."
innerTexta été introduit par Microsoft et n'a pas été pris en charge par Firefox pendant un certain temps. En août 2016, a innerTextété adopté par le WHATWG et a été ajouté à Firefox en v45.
innerText vous donne une représentation sensible au style du texte qui essaie de correspondre à ce qui est rendu par le navigateur, cela signifie:
innerTexts'applique text-transformet white-spacerègles
innerText coupe l'espace blanc entre les lignes et ajoute des sauts de ligne entre les éléments
innerText ne renverra pas de texte pour les éléments invisibles
innerTextretournera textContentpour les éléments qui ne sont jamais rendus comme <style />et `
- Propriété des
Nodeéléments
node.textContent
Obtient ou définit le contenu textuel d'un nœud et de ses descendants.
x.textContent
// => "
// => Warning: This element contains code and strong language.
// => "
Bien qu'il s'agisse d' une norme W3C , elle n'est pas prise en charge par IE <9.
- Ne connaît pas le style et renverra donc le contenu caché par CSS
- Ne déclenche pas de refusion (donc plus performant)
- Propriété des
Nodeéléments
node.value
Celui-ci dépend de l'élément que vous avez ciblé. Pour l'exemple ci-dessus, xretourne un objet HTMLDivElement , qui n'a pas de valuepropriété définie.
x.value // => null
Les balises d'entrée ( <input />), par exemple, définissent une valuepropriété , qui fait référence à la "valeur actuelle dans le contrôle".
<input id="example-input" type="text" value="default" />
<script>
document.getElementById('example-input').value //=> "default"
// User changes input to "something"
document.getElementById('example-input').value //=> "something"
</script>
De la documentation :
Remarque: pour certains types d'entrée, la valeur renvoyée peut ne pas correspondre à la valeur entrée par l'utilisateur. Par exemple, si l'utilisateur entre une valeur non numérique dans un <input type="number">, la valeur renvoyée peut être une chaîne vide à la place.
Exemple de script
Voici un exemple qui montre la sortie pour le HTML présenté ci-dessus:
var properties = ['innerHTML', 'innerText', 'textContent', 'value'];
// Writes to textarea#output and console
function log(obj) {
console.log(obj);
var currValue = document.getElementById('output').value;
document.getElementById('output').value = (currValue ? currValue + '\n' : '') + obj;
}
// Logs property as [propName]value[/propertyName]
function logProperty(obj, property) {
var value = obj[property];
log('[' + property + ']' + value + '[/' + property + ']');
}
// Main
log('=============== ' + properties.join(' ') + ' ===============');
for (var i = 0; i < properties.length; i++) {
logProperty(document.getElementById('test'), properties[i]);
}
<div id="test">
Warning: This element contains <code>code</code> and <strong>strong language</strong>.
</div>
<textarea id="output" rows="12" cols="80" style="font-family: monospace;"></textarea>
innerTextune implémentation non standard de textContext par MSIE n'est pas anodine.