Remplacer le innertext/textcontent sans supprimer les balises

0/5 (9 avis)

Snippet vu 5 637 fois - Téléchargée 18 fois

Contenu du snippet

Bonjour,

Cette petite source anodine permet de remplacer un caractère par un autre dans une chaîne. Par contre, la fonction ne remplacera pas la lettre si elle est dans une balise.

Exemple : Je veux remplacer / par \ dans la chaîne suivante:

<span>Tes/t</span>

Une fonction ordinaire aurait retourné

<span>Tes\t<\span>

Cette fonction retournera quant à elle :

<span>Tes\t</span>
<span>Tes/t</span>

Source / Exemple :


<script type="text/javascript">
function replace_innerHTML(tn,ty,ts){

can1=true;
can2=true;

for(var i=0;i<tn.length;i++){
tv=tn.charAt(i);

if(tv=="<"){
can1=false;
}
else if(tv=='"' && can2 && !can1){

can2=false;

}
else if(tv=='"' && !can2 && tn.charAt(i-1)!="\\" && !can1){
can2=true;

}
else if(tv=='>' && !can1 && can2){
can1=true;

}

if(tv==ty && can1){
yn=new Array();
for(var j=0;j<tn.length;j++){

yn.push(tn.charAt(j))

}

yn[i]=ts;
tn=yn.join("");
}
}

return tn;
}
</script>
<div onclick="alert(replace_innerHTML(this.innerHTML,'/','\\'))"><span>Tes/t</span></div>

Conclusion :


Source sans prétention mais ennuyante et longue à imaginer/coder

Rendez-vous sur mon blog pour plus d'information sur mes prochaines sources

A voir également

Ajouter un commentaire Commentaires
jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 7
18 juin 2010 à 19:01
Je l'ai supprimé :S Je suis parti pour la fin de semaine, je la referai et je te l'enverrai lorsque je reviendrai.
cs_era Messages postés 77 Date d'inscription lundi 6 mai 2002 Statut Membre Dernière intervention 4 mai 2011
18 juin 2010 à 16:07
c bizarre envoie ta fonction que j y jette un oeil
jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 7
18 juin 2010 à 15:40
Ouais c'est ce que je fais.

Je recherchais tous les enfants enfants de l'élément à modifier. Si l'élément enfant avait un type 3 (noeud Texte), je le modifiais sinon je continuais ma recherche. Le prob c'est que c'est 2 fois plus lent :/
cs_era Messages postés 77 Date d'inscription lundi 6 mai 2002 Statut Membre Dernière intervention 4 mai 2011
18 juin 2010 à 14:48
travail sur le objet avec javascript dom
jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 7
18 juin 2010 à 01:36
Bonjour,

J'ai essayé mais c'est presque 2 fois moins rapide que ma technique :/ déjà que je trouve ma méthode peu rapide... Tu pourrais tu me montrer ce que tu veux dire ?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.