Remplacer le innertext/textcontent sans supprimer les balises

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 027 fois - Téléchargée 16 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
656
Date d'inscription
samedi 30 décembre 2000
Statut
Membre
Dernière intervention
20 juillet 2012
3 -
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
-
c bizarre envoie ta fonction que j y jette un oeil
jdmcreator
Messages postés
656
Date d'inscription
samedi 30 décembre 2000
Statut
Membre
Dernière intervention
20 juillet 2012
3 -
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
-
travail sur le objet avec javascript dom
jdmcreator
Messages postés
656
Date d'inscription
samedi 30 décembre 2000
Statut
Membre
Dernière intervention
20 juillet 2012
3 -
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.