在JavaScript单引号和双引号中转义字符

时间:2012-05-22 09:57:47

标签: javascript escaping

我有一个关于在JavaScript中转义字符的问题,我希望你能帮助它。假设我有以下JavaScript代码:

document.write("<img src=\"http://www.google.com\" />");

现在在上面的示例中,您可以看到我已使用双引号document.write开始",因此我需要在&lt; img src="" />内转义引号以确保JavaScript仍然认为它是一个字符串。

但是在下面的示例中,您可以看到我使用单引号'来开始document.write语句。我的问题是我还需要逃避双引号吗?我知道这个声明在没有这个的情况下可行,但最佳做法是什么?

document.write('<img src=\"http://www.google.com\" />');  

我问的原因是我有一个条件声明,我写的是触发图像(按照上面的行),但它似乎没有工作,并排除所有可能的可能性导致这个。我每天都会遇到类似这样的东西,所以任何帮助都会非常感激。这可能是一个愚蠢的问题,所以提前道歉......

5 个答案:

答案 0 :(得分:13)

使用单引号时,您只需要转义单引号,而不是双引号。

(编辑:反之亦然!)

答案 1 :(得分:3)

document.write('<img src="http://www.google.com" onClick="foo(\'bar\');" />'); 

您只需要转义正在使用的相同类型的引号。

答案 2 :(得分:3)

到目前为止,你已经得到了这样的图片:无需转义那些你没有用作该特定字符串的分隔符的引号。但是:最佳实践是一个不同的故事。我知道有些人会告诉你“总是逃避报价”是一个很好的习惯。我不同意。与其他语言不同,JavaScript在转义字符方面相当宽松:在第二个示例中,反斜杠不会被打印出来。

情况并非总是这样,所以我的建议是:在你使用的引号(单个|| double)中保持一致,并且只转义那些需要转义的引号。 根据您正在使用的其他语言,您可能想要考虑一下您将使用哪些引号。例如,如果您使用PHP,请坚持使用单引号,因为双引号不仅仅是分隔字符串。如果您习惯于编写类C语言(或Java),最好保持使用双引号的习惯,因为这些语言中的单引号和双引号之间存在更大的差异

答案 3 :(得分:1)

document.write('<img src="http://www.google.com" />');工作得很好。

document.write("<img src='http://www.google.com' />");

的计数相同

答案 4 :(得分:0)

<html>
<body>

<script type="text/javascript">

document.write(escape("<img src=\"http://www.google.com\" />"));

</script>

</body>
</html>