我有一个带有HTML标签的字符串。
我试图用innerHTML插入它,但这会将标记保留为纯文本。
我发现我需要解析实际的HTML。
jQuery似乎有一种方法可以做到这一点,但它不起作用。
var article = document.createElement("div");
var title = document.createElement("div");
var articleBody = document.createElement("div");
articleBody.setAttribute("id", "article-body");
title.innerHTML = child.data.title;
articleBody = $.parseHTML(child.data.selftext_html);
article.appendChild(title);
article.appendChild(articleBody);
当我输入此代码时,没有任何作用。
我没有正确使用parseHTML()方法吗?
编辑(来自两个不同部分的HTML示例):
<!-- SC_OFF --><div class="md"><p>It's in the best interests of anyone
holding you back.</p> </div><!-- SC_ON -->
答案 0 :(得分:0)
试试这个小提琴:http://jsfiddle.net/LkjccadL/1/
这使用您的示例字符串
var myHTMLString = '<!-- SC_OFF --><div class="md"><p>It's in the best interests of anyone holding <b>you</b> back.</p> </div><!-- SC_ON -->';
$("#mydivthingy").html($.parseHTML(myHTMLString));
这可以作为例外,并创建div / p。保留评论标签并使用正确的引用和所有。
如果一旦将其应用到您的代码/变量就停止工作,我建议您发出警报或检查控制台是否有错误?
alert(child);
alert(child.data);
alert(child.data.selftext_html);
怀疑你可能实际上没有得到html?可能?
究竟是什么创建 child.data.selftext_html
// Something To Try??
// This appears to be the jQuery way of doing this... seems.. hackish?
var sHTMLResult = $('<textarea />').html(child.data.selftext_html).text();
$("#myelement").html(sHTMLResult );
答案 1 :(得分:0)
您可以使用jQuery轻松创建HTML:
var article = $('<div />');
var title = $('<div />').html(child.data.title);
var body = $('<div id="article-body" />').html(child.data.selftext_html);
article
.appendTo("body")
.append(title)
.append(body);
您还可以优化代码。 child.data.title
和child.data.selftext_html
值看起来只是文本/ HTML,因此您应该能够即时创建HTML。这样效率要高一些,但我怀疑你会注意到这样的东西。
$('body').append(
'<div>' +
'<div>' + child.data.title + '</div>' +
'<div id="article-body">' + child.data.selftext_html + '</div>' +
'</div>'
);