【发布时间】:2015-02-18 00:35:20
【问题描述】:
我正在尝试使用 javascript 的替换函数替换字符串中的 "<" 和 ">"。我是这样使用的:
<html>
<body onload="myFunction()">
<p id="demo">#include <iostream></p>
<script>
function myFunction() {
var str = document.getElementById("demo").innerHTML;
var res = str.replace(/</g, '< ').replace(/>/g, '> ');
document.getElementById("demo").innerHTML = res;
}
</script>
</body>
</html>
我希望输出为"#include <iostream>",但相应的</iostream> 会附加到所需的输出。
发生了什么事?如何避免这种行为?
【问题讨论】:
-
你是否在 html 中转义了
?如果没有,请将 '' 与 >。如果不转义文本,浏览器会将 视为标签,并适当地关闭它。 -
它被解释为 HTML,
<iostream>标签打开但未关闭,然后<p>关闭,使解释器为@987654328 插入关闭标签@. -
您是否首先尝试过有效的 HTML?
-
@asmeltseg 让我告诉你,JS 不是解决这个问题的正确方法。
-
@asmeltseg 这个替换应该在用户看到任何东西之前在服务器端完成
标签: javascript html replace