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' Element
objets.
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."
innerText
a é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:
innerText
s'applique text-transform
et white-space
rè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
innerText
retournera textContent
pour 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, x
retourne un objet HTMLDivElement , qui n'a pas de value
propriété définie.
x.value // => null
Les balises d'entrée ( <input />
), par exemple, définissent une value
proprié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>
innerText
une implémentation non standard de textContext par MSIE n'est pas anodine.