Remplacer le innertext/textcontent sans supprimer les balises

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

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.