我有一个关于在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\" />');
我问的原因是我有一个条件声明,我写的是触发图像(按照上面的行),但它似乎没有工作,并排除所有可能的可能性导致这个。我每天都会遇到类似这样的东西,所以任何帮助都会非常感激。这可能是一个愚蠢的问题,所以提前道歉......
答案 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>