试图将HTML解析为Javascript

时间:2015-03-01 05:56:36

标签: javascript jquery html

我有一个带有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&#39;s in the best interests of anyone

holding you back.</p> </div><!-- SC_ON -->

2 个答案:

答案 0 :(得分:0)

试试这个小提琴:http://jsfiddle.net/LkjccadL/1/

这使用您的示例字符串

var myHTMLString = '<!-- SC_OFF --><div class="md"><p>It&#39;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.titlechild.data.selftext_html值看起来只是文本/ HTML,因此您应该能够即时创建HTML。这样效率要高一些,但我怀疑你会注意到这样的东西。

$('body').append(
    '<div>' +
        '<div>' + child.data.title + '</div>' +
        '<div id="article-body">' + child.data.selftext_html + '</div>' +
    '</div>'
);