javascript替换无法使用“<&”;

javascript replace fails to work with "<"

本文关键字:lt 替换 javascript      更新时间:2023-12-19

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

<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>

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

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

因为html中有<iostream>,所以它在浏览器中被解释为一个标记,它添加了一个额外的关闭</iostream>。看起来好像你正试图使用JS来转义它,但为时已晚,因为你的浏览器正在加载javascript之前的html,并添加了额外的结束标记。在html中转义以避免附加额外的结束标记行为:

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

我只想自动将"<"answers">"分别替换为&lt;&gt;@rioc0719:我不想手动更换

不要尝试使用JS进行此操作。找一个IDE为你做这件事。见鬼,做一个服务器端脚本来为你做这件事;只是不要使用JS,一种客户端语言

2问题的答案

  • 带有"innerHTML"的自动关闭标记:找到Javascript。innerHTML更改自动关闭标记
  • 替换"<"answers">"使用textContent

<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>