如何将html字符串转换为html dom元素?

时间:2010-07-09 19:06:43

标签: javascript html

我有一个web服务,它返回html字符串作为响应。我想在div元素中显示响应。我从服务中得到的回应是

<span style="text-indent: 29px;padding-top:35px;font-size: 16pt;font-family: Arial;color: #FFFFFF;font-weight: bold;position: absolute;text-decoration: none;">89</span>
<span style="text-indent: 41px;padding-top: 58px;font-size: 8pt;letter-spacing: 1px;font-family: Arial;color: #E5DA95;font-weight: bold;position: absolute;text-decoration: none">89</span>
<span style="text-indent: 55px;padding-top: 58px;font-size: 8pt;letter-spacing: 1px;font-family: Arial;color: #E5DA95;font-weight: bold;position: absolute;text-decoration: none">-</span>
<span style="text-indent: 59px;padding-top: 58px;font-size: 8pt;letter-spacing: 1px;font-family: Arial;color: #E5DA95;font-weight: bold;position: absolute;text-decoration: none">92</span>
<img src="https://www.autocheck.com/members/img/freeLinkScore/scoreBanner4.gif" height="75" width="75" border="0">

我使用了语句div.innerHTML = response;

响应显示为文本而不是HTML。有人可以告诉我如何在div中显示响应为html。

4 个答案:

答案 0 :(得分:1)

设置元素的innerHTML属性不会导致该内容被编码;它的目的是专门用于在元素中获取和设置 HTML

如果响应是html编码,请仔细检查您从服务器获取的实际响应文本,并确保它没有在服务器端编码。您看到的响应可能只是文本的HTML呈现版本,这可以解释您如何看到三角括号而不是实际的html编码文本。

答案 1 :(得分:1)

如果这是您的网络服务,请将其更改为输出未经HTML编码的响应。

否则,在将响应设置为内容之前,您必须对响应进行HTML解码。 我找了一个轻量级的解码器,找不到比简单正则表达式更强大的解码器。

所以,这可能会满足您的直接需求,请注意它可能会破坏某些内容组合(在这种情况下似乎不太可能)。

response = response.replace (/&lt;/ig, '<').replace (/&gt;/ig, '>');


PS:请确保此网络服务器无法为您提供恶意html,例如<script>标记。

答案 2 :(得分:0)

将div.innerHTML设置为类似

的内容
<span style="text-indent: 29px;padding-top:35px;font-size: 16pt;font-family: Arial;color: #FFFFFF;font-weight: bold;position: absolute;text-decoration: none;">89</span> 

不会起作用,因为该文本不是html编码的,所以javascript正在处理引号,如转义序列。如果是html编码,您会看到&quot;代替引号。要对其进行编码,您应该能够使用Server.HtmlEncode方法。

答案 3 :(得分:0)

您可以分两步完成此操作:

div.innerHTML = response;
var htmlstring=div.innerText||div.textContent;
div.innerHTML=htmlstring;