web-dev-qa-db-fra.com

innerHTML sans le html, juste du texte

J'ai créé un lien e-mail qui remplit automatiquement les informations nécessaires dans le corps. Mais, quand je fais .innerHTML, j'obtiens un peu plus que ce que j'avais négocié.

Je veux "mars 2012: 12-16"

Ce que je reçois <B>March, 2012</B>: <FONT color=blue>12</FONT> - <FONT color=blue>16</FONT>

Existe-t-il un moyen d'obtenir le innerHTML sans les balises html?

.value = undefined
.text = undefined
23
cphilpot

Vous voulez .textContent Dans tous les IE, sauf les anciens, et .innerText Dans IE (<9).

Alors, essayez:

string = (node.textContent===undefined) ? node.innerText : node.textContent;

EDIT: Ou, utilisez simplement string = (node.innerText || node.textContent) beaucoup plus propre de GGG, puisque undefined est faux.

41
apsillers

Dans le navigateur qui prend en charge la norme, vous pouvez utiliser textContent au lieu de innerHTML. Sinon, vous pouvez parcourir les nœuds suivants et les concaténer, ou utiliser une bibliothèque comme jQuery qui résume cette approche pour vous.

5
ZER0

Si vous utilisez déjà jQuery, vous pouvez utiliser .text ():

http://jsfiddle.net/vkgYR/

si vous ne l'utilisez pas, vous devriez simplement aller avec les autres commentaires car il serait idiot de charger tout jQuery uniquement pour la méthode .text ()

3
slowBear