Javascript: échapper à des guillemets doubles en HTML

Comment puis-je empêcher les images[i].title dessous de briser le HTML s'il contient des guillemets?

 for ( i=0;i<=images.length-1;i++ ){ gallery += '<img width="250" height="250" src="' + images[i].src + '" title="' + images[i].title + '" />'; } 

Vous pouvez utiliser la méthode replace () pour échapper aux guillemets doubles:

 for (var i = 0; i < images.length; ++i) { gallery += '<img width="250" height="250" src="' + images[i].src + '" title="' + images[i].title.replace(/\"/g, '\\"') + '" />'; } 

EDIT: le résultat sera une chaîne JavaScript valide, mais ne fonctionnera pas comme un balisage HTML car l'analyseur HTML ne comprend pas les échappements de la barre oblique invariable. Vous devrez remplacer les caractères à double citation par des guillemets simples dans votre titre d'image:

 for (var i = 0; i < images.length; ++i) { gallery += '<img width="250" height="250" src="' + images[i].src + '" title="' + images[i].title.replace(/\"/g, "'") + '" />'; } 

Ou inversez les types de devis dans votre balisage:

 for (var i = 0; i < images.length; ++i) { gallery += "<img width='250' height='250' src='" + images[i].src + "' title='" + images[i].title + "' />"; } 

Comme personne ne semble avoir exactement la bonne réponse à mon avis:

 for ( i=0;i<=images.length-1;i++ ){ gallery += '<img width="250" height="250" src="' + images[i].src + '" title="' + images[i].title.replace(/\"/g,'&quot;') + '" />'; } 

Cela remplace toutes les citations, et vous finissez par des guillemets doubles, et ils sont représentés dans un format html valide.

 var_name.replace(/\"/gi,'%22'); 

C'est celui que vous recherchez. Même si vos couleurs sont "désactivées" dans Visual Studio.

\ Échappe à la citation suivante. Gi fait un remplacement pour toutes les occurrences.

Vous pouvez appeler le remplacement sur votre chaîne de titre:

 for ( i=0;i<=images.length-1;i++ ){ gallery += '<img width="250" height="250" src="' + images[i].src + '" title="' + images[i].title.replace('"',"'") + '" />'; }