7

我不应该转义“markup4”等中的双引号吗?令我惊讶的是,这个简单的作品。如果我用 " 代替它们,它不会。

<script type="text/javascript">

    function test3(){
    document.getElementById('div21').innerHTML += '<div class = "markup4"><br>blablablabla1.<br><br></div><div class = "markup3"><br>blablabla2.<br><br></div>';
    }

</script>
4

4 回答 4

14

这些工作没有逃脱:

innerHTML = "<div class = 'markup4'>";
innerHTML = '<div class = "markup4">';

注意:当在"外面使用时,在'里面可以正常工作。(反之亦然)

这些需要逃避:

innerHTML = '<div class = \'markup4\'>';
innerHTML = "<div class = \"markup4\">";

注意:当您在外部和内部使用双引号时,内部的 "需要用\. (单引号也一样)

这些将打破:

innerHTML = "<div class = "markup4">";
innerHTML = '<div class = 'markup4'>';
于 2013-01-19T11:39:56.383 回答
1

当您想在数据中包含引号时,应使用转义,

例如:他说,“请用这个!” 应该像这样逃脱:

他说,\“请用这个!\”。

否则他们工作没有任何麻烦。

希望我已经澄清了。

于 2013-01-19T11:37:21.127 回答
1

首先,字符串被解析为内部 javascript 字符串表示,因此您首先需要为 javascript 字符串文字转义。这样做的结果将与您已经拥有的结果相同 - 因此不需要修改。

现在你有

<div class = "markup4"><br>blablablabla1.<br><br></div><div class = "markup3"><br>blablabla2.<br><br></div>

内部在 javascript 内存中。

在此之后,就像您将其编写为普通 HTML 一样,所以当然,如果您使用&quot;它,它将无法正常工作。

存储经过 2 种不同解释的字符串可能会变得非常复杂,这就是为什么您不应该这样做,而是将模板引擎与存储在其他文件中的模板或页面上的自定义脚本元素一起使用,这样您就可以只专注于关于html解释。

于 2013-01-19T11:42:05.073 回答
0

不要忘记浏览器会根据您提供的内容呈现自己的 innerHtml,如果嵌套 innerHtml 代码可能会导致问题。

我发现&apos;&quot;代码在这里很有用。

于 2018-08-22T14:27:01.130 回答