Ce code fonctionne parfaitement pour remplacer une chaîne par un html:javascript remplacer méthode fonctionne sauf en boucle, il échappe html
$('.active_admin_comment_body').each(function(comment_index){
the_string = $(this).text().replace("#Excitement", "<span style=\"background-color: lightgrey;\">#Excitement</span>");
$(this).html(the_string);
)};
Le problème avec le code ci-dessus est qu'il ne fonctionne que pour remplacer une valeur. Je un tableau de valeurs, de sorte que je l'ai écrit le code suivant à boucle à travers la matrice, puis modifier chaque commentaire avec une valeur dans le tableau:
$('.active_admin_comment_body').each(function(comment_index){
hashtags = ["#Excitement", "#Sad News", "#Moderate"];
comment = $(this);
$.each(hashtags, function(index, value){
new_comment = comment.text().replace(value, "<span style='background-color: lightgrey;'>" + value + "</span>");
comment.html(new_comment);
});
});
Le premier bloc de code fonctionne à 100%. Le deuxième bloc de code ne fonctionne que si vous supprimez le code HTML à l'intérieur de la méthode de remplacement. Comment puis-je faire fonctionner le deuxième bloc de code?
Si vous souhaitez remplacer toutes les correspondances utilisent 'str.replace (/ textToReplace/g, 'replaceWith'); ' –
Merci, mais je ne suis pas sûr de comprendre votre commentaire. J'ai essayé de remplacer 'replace' par' replaceWith' mais rien n'a changé. J'ai aussi regardé la documentation de 'replaceWith' et il semble que ce soit pour les éléments DOM, pas de texte particulier. – Philip7899
@ Philip7899 Ce n'est pas ce que @YordanNikolov a dit. Il fait remarquer que vous devriez changer '" #Excitation "' '/' # Excitement/g' ou 'RegExp (" # Excitation "," g ")'. Le 'g' signifie remplacer toutes les instances au lieu de remplacer le premier, puis de s'arrêter. – wecsam