从HTML字符串中提取DOM节点,将结果显示为HTML字符串

时间:2013-02-12 04:13:29

标签: jquery

鉴于

var html = "<html><body><p>Hello, World!</p><p>Ciao!</p></body></html>";

我想提取body代码(<p>Hello, World!</p><p>Ciao!</p>)的内部HTML。

.find()找到body DOM节点

var body = $(html).find("body");

但我找不到获取该节点的内部HTML的方法。我试过了:

var text = body.text(); //  returns ""
var var = body.var(); // returns undefined

如何获取<body>标记内部HTML的字符串表示形式?

4 个答案:

答案 0 :(得分:1)

您可以使用substring,获取索引和索引,并使用内部的内容创建子字符串。

var bot = html.indexOf("<body>");
var top= html.indexOf("</body>");
var body=html.substring(bot,top);

答案 1 :(得分:0)

当你将字符串包装在html中时,jQuery会删除body$()个标签。

因此你可以这样做:

var str=$('<div>').append($(html)).html()

DEMO http://jsfiddle.net/LxdrM/

答案 2 :(得分:0)

您可以尝试body[0].innerHTML()

答案 3 :(得分:0)

当您想要显示字符串表示时,最好将html保存在div元素(或body标记内的任何其他元素)中,而不是body标记本身。对于字符串表示,请使用TextArea,这也是SO正在使用的。

<强> Working fiddle

$(function(){
   var body = $('html').find('div'); 
   var text = body.html(); 
   $("#textArea").val(text);
});

<强> HTML

<html>
     <body>
        <div><p>Hello, World!</p>
             <p>Ciao!</p>
        </div>
        <textarea id="textArea" name="post-text" cols="92" rows="15" tabindex="101">
        </textarea>
     </body>    
 </html>