Si j'ai une envergure, dites:
<span id="myspan"> hereismytext </span>
Comment utiliser JavaScript pour remplacer "hereismytext" par "newtext"?
javascript
html
user105033
la source
la source
textContent
place, de sorte que les nouvelles personnes seront encouragées à utiliser des méthodes appropriées et sécurisées?L'utilisation de innerHTML n'est donc PAS RECOMMANDÉE . Au lieu de cela, vous devez créer un textNode. De cette façon, vous "liez" votre texte et vous n'êtes pas, au moins dans ce cas, vulnérable à une attaque XSS.
Le droit chemin:
Pour plus d'informations sur cette vulnérabilité: Cross Site Scripting (XSS) - OWASP
Modifié le 4 novembre 2017:
Troisième ligne de code modifiée selon la suggestion de @mumush : "utilisez appendChild (); à la place".
Btw, selon @Jimbo Jonny, je pense que tout devrait être traité comme une entrée utilisateur en appliquant le principe de la sécurité par couches. De cette façon, vous ne rencontrerez aucune surprise.
la source
innerHTML
preuve de prudence, notez que votre solution utiliseinnerText
ce qui n'est pas pris en charge dans Firefox. quirksmode.org/dom/html Il utilise égalementtextContent
ce qui n'est pas pris en charge dans IE8. Vous pouvez structurer le code pour contourner ces problèmes.span.appendChild(txt);
plutôt!innerHTML
n'est pas recommandée est ridicule. Sans oublier qu'il est toujours bien une fois désinfecté. L'idée que l'on devrait assainir les entrées des utilisateurs N'EST PAS LIÉE À cette question spécifique. Tout au plus mérite-t-il une petite note à la fin disant "btw: si c'est une entrée utilisateur, assurez-vous d'abord de nettoyer ou d'utiliser la méthode X qui n'en a pas besoin" .span.innerHTML = "";
alors ajouterChild?la source
EDIT: Cela a été écrit en 2014. Vous ne vous souciez probablement plus de IE8 et pouvez oublier d'utiliser
innerText
. Il suffit de l'utilisertextContent
et d'en finir, hourra.Si vous êtes celui qui fournit le texte et qu'aucune partie du texte n'est fournie par l'utilisateur (ou une autre source que vous ne contrôlez pas), le réglage
innerHTML
peut être acceptable:Cependant, comme d'autres le notent, si vous n'êtes pas la source d'une partie de la chaîne de texte, l'utilisation
innerHTML
peut vous soumettre à des attaques par injection de contenu comme XSS si vous ne faites pas attention de bien nettoyer le texte en premier.Si vous utilisez les entrées de l'utilisateur, voici une façon de le faire en toute sécurité tout en conservant la compatibilité entre les navigateurs:
Firefox ne prend pas en charge
innerText
et IE8 ne prend pas en chargetextContent
, vous devez donc utiliser les deux si vous souhaitez conserver la compatibilité entre les navigateurs.Et si vous voulez éviter les reflux (causés par
innerText
) dans la mesure du possible:la source
J'utilise
Jquery
et rien de ce qui précède n'a aidé, je ne sais pas pourquoi mais cela a fonctionné:la source
Voici une autre façon:
La propriété innerText sera détectée par Safari, Google Chrome et MSIE. Pour Firefox, la façon standard de faire les choses était d'utiliser textContent, mais depuis la version 45, il a aussi une propriété innerText, comme quelqu'un m'a gentiment informé récemment. Cette solution teste pour voir si un navigateur prend en charge l'une de ces propriétés et, dans l'affirmative, attribue le "nouveau texte".
Démo en direct: ici
la source
En plus des réponses javascript pures ci-dessus, vous pouvez utiliser la méthode de texte jQuery comme suit:
Si vous devez étendre la réponse pour obtenir / modifier le contenu html des éléments span ou div, vous pouvez le faire:
Références:
.text (): http://api.jquery.com/text/
.html (): http://api.jquery.com/html/
la source
Vous pouvez également utiliser la méthode querySelector (), en supposant que l'id 'myspan' est unique car la méthode retourne le premier élément avec le sélecteur spécifié:
developer.mozilla
la source
Comme dans d' autres réponses, innerHTML et innerText ne sont pas recommandés, il vaut mieux utiliser textContent . Cet attribut est bien pris en charge, vous pouvez le vérifier ceci: http://caniuse.com/#search=textContent
la source
cela sélectionnera dom-node avec id
myspan
et le changera le contenu du texte ennew text
la source
Tu peux faire
la source
Pour cette durée
Vous pouvez aller comme ça: -
la source