无需在javascript中转义innerHTML字符?

时间:2013-01-19 11:33:31

标签: javascript escaping innerhtml

我是否应该避免使用" markup4"中的双引号?这样的?令我惊讶的是这个简单的作品。如果我用& quot替换它们,那就不会。

<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 个答案:

答案 0 :(得分:12)

这些工作无需逃避:

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

注意:当"在外面使用时,'在内部正常工作。 (和   相反的)

这些需要逃脱:

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

注意:当你在里面和里面使用双引号时,里面是   "需要转义\。 (单引号相同)

这些会破坏:

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

答案 1 :(得分:1)

首先将字符串解析为内部javascript字符串表示形式,因此首先需要为javascript字符串文字转义。结果将与您已有的结果相同 - 因此无需进行任何修改。

现在你有了

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

在javascript内存中。

在此之后,就像您将其写为普通HTML一样,当然,如果您使用&quot;,它将无效。

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

答案 2 :(得分:0)

如果要在数据中包含引号,则应使用

转义

前:他说,&#34;请用这个!&#34;应该像以下一样逃脱:

他说,\&#34;请用这个!\&#34;。

否则他们没有任何麻烦。

希望我已经澄清了。

答案 3 :(得分:0)

别忘了浏览器会根据您提供的内容呈现自己的innerHtml,如果嵌套innerHtml代码,可能会引起问题。

我发现Get-Childitem $dir_to_look *.xml -Recurse | Where-Object { $_.LastWriteTime -gt $TwoDays } | Select-Object LastWriteTime, FullName | Export-Csv -LiteralPath "E:\xPression\CustomerData\xPressionECR\ReportOutput\Report.csv " &apos;代码在这里很有用。