Javascript:在HTML中转义双引号

时间:2010-12-17 22:26:31

标签: javascript html escaping

如果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 + '" />';
}

4 个答案:

答案 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,'&quot;') + '" />';
}

这取代了所有引号,您最终会使用双引号,并且它们以有效的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('"',"'") + '" />';
}