使用JavaScript格式化HTML字符串以使其正确显示

时间:2019-06-24 19:57:37

标签: javascript java html

后端交出一个显示如下的字符串:

"Hello, <br><br> This notice is to inform you that you are in violation of <font color=red><b>HR POLICY XXXXX</b></font>."

此页面的目的是让您轻松地复制粘贴预先生成的电子邮件,但是通过这些句子吐出一堆html标签是不必要的。

有问题的字符串在ID为“ textBlock”的a内。

后端是带有Oracle DB的Java。我可以在某种程度上编辑Java,而我完全无法接触数据库。我已经使用控制台来处理字符串,并在完成编辑后以任何方式对其进行编辑似乎都能使其正确显示。 innerText包括我的摘要中的标签,innerHTML显示诸如
.p的标签。

到目前为止,我已经尝试提供一个onload属性,该属性调用名为formatText()的函数;这样做: temp var = document.getElementById(“ textBlock”)。innerText; document.getElementById(“ textBlock”)。innerText = var;

以及上述使用innerHTML而不是innerText的函数。我也尝试过使用document.write();最终,这清除了页面的其余部分。最后,我在字符串前面添加了一些随机字符,并尝试使用replace(“!@#”,“”)函数替换那些字符,以模仿“编辑”它以任何方式似乎都能正确显示”。

java

out.println("<td align=left id=textBlock onload=formatText();> !@#" + strTemp + "</td>" );

预期:

你好

此通知是为了通知您您违反了 HR POLICY XXXXX

实际:

Hello, <br><br> This notice is to inform you that you are in violation of <font color=red><b>HR POLICY XXXXX</b></font>.

2 个答案:

答案 0 :(得分:1)

(已解决,已添加答案以确保完整性)

当HTML标记在浏览器中可见时,通常使用html-entities对其进行编码,以防止将其解析为HTML。在这种情况下,后处理脚本会将<>字符替换为其对应的实体&lt;&gt;

禁用这些替换解决了该问题。

答案 1 :(得分:0)

如果我正确理解的话,您想要的是一些剥离html标签的功能。您可以使用正则表达式

var str = "Hello, <br><br> This notice is to inform you that you are in violation of <font color=red><b>HR POLICY XXXXX</b></font>."

console.log(str)

var str2 = str.replace(/<[^>]*>?/gm, '')

console.log(str2)

如果您希望html元素呈现html,则需要使用DOM属性innerHtml

var str = "Hello, <br><br> This notice is to inform you that you are in violation of <font color=red><b>HR POLICY XXXXX</b></font>."

document.getElementById('myDiv').innerHTML = str
<div id="myDiv">Hi</div>