javascript替换无法使用“<”

时间:2015-02-18 00:35:21

标签: javascript html replace

我正在尝试使用javascript的替换功能替换字符串中的"<"">"。我使用它如下:

&#13;
&#13;
<html>
<body onload="myFunction()">
<p id="demo">#include <iostream></p>

<script>
function myFunction() {
    var str = document.getElementById("demo").innerHTML; 
    var res = str.replace(/</g, '&lt; ').replace(/>/g, '&gt; ');
    document.getElementById("demo").innerHTML = res;
}
</script>

</body>
</html>
&#13;
&#13;
&#13;

我希望输出为"#include <iostream>",但相应的</iostream>会附加到所需的输出。

发生了什么事?我该如何避免这种行为?

2 个答案:

答案 0 :(得分:1)

由于您的html中有<iostream>,因此它会被解释为浏览器中的标记,这会增加额外的结束</iostream>。看起来好像你正在尝试使用JS来逃避它,但是为时已晚,因为你的浏览器在javascript之前加载了html,添加了额外的结束标记。在你的html中转义它以避免额外的结束标记被追加行为:

<p id="demo">#include &lt;iostream&gt;</p>
  

我只想自动更换&#34;&lt;&#34;和&#34;&gt;&#34;分别为&lt;&gt;。 @ rioc0719:我不想做手动更换。

不要尝试用JS做到这一点。获取一个为您完成此任务的IDE。地狱,制作一个服务器端脚本,为您完成此任务;只是不要使用JS,客户端语言

答案 1 :(得分:0)

有问题的2个回答

<html>
<body onload="myFunction()">
<p id="demo">#include <iostream> </p>


<script>
function myFunction() {
    var str = document.getElementById("demo").innerHTML; 
    var res = str.replace(/</g, '&lt; ').replace(/>/g, '&gt; ');
    document.getElementById("demo").textContent  = res;
}
 
</script>

</body>
</html>