如果HTML包含双引号,我如何阻止下面的images[i].title
破坏HTML?
for ( i=0;i<=images.length-1;i++ ){
gallery += '<img width="250" height="250" src="' + images[i].src + '" title="' + images[i].title + '" />';
}
答案 0 :(得分:13)
因为在我看来似乎没有人能得到正确答案:
for ( i=0;i<=images.length-1;i++ ){
gallery += '<img width="250" height="250" src="' + images[i].src
+ '" title="' + images[i].title.replace(/\"/g,'"') + '" />';
}
这取代了所有引号,您最终会使用双引号,并且它们以有效的html格式表示。
答案 1 :(得分:6)
您可以使用replace()方法来转义双引号:
for (var i = 0; i < images.length; ++i) {
gallery += '<img width="250" height="250" src="' + images[i].src
+ '" title="' + images[i].title.replace(/\"/g, '\\"') + '" />';
}
编辑:结果将是一个有效的Javascript字符串,但不能用作HTML标记,因为HTML解析器无法理解反斜杠转义。您必须在图像标题中用单引号替换双引号字符:
for (var i = 0; i < images.length; ++i) {
gallery += '<img width="250" height="250" src="' + images[i].src
+ '" title="' + images[i].title.replace(/\"/g, "'") + '" />';
}
或者反转标记中的报价类型:
for (var i = 0; i < images.length; ++i) {
gallery += "<img width='250' height='250' src='" + images[i].src
+ "' title='" + images[i].title + "' />";
}
答案 2 :(得分:2)
var_name.replace(/\"/gi,'%22');
那是你要找的那个。即使您的颜色在Visual Studio中看起来“关闭”。
\
逃脱了以下引用。
gi替代了所有出现的情况。
答案 3 :(得分:1)
您可以在标题字符串上调用replace:
for ( i=0;i<=images.length-1;i++ ){
gallery += '<img width="250" height="250" src="' + images[i].src + '" title="' + images[i].title.replace('"',"'") + '" />';
}