2010-04-13 61 views
9

我想打印整个元素,包括标签名称,属性名称/值对和innerHTML。我怎样才能在JavaScript(jQuery)中做到这一点?如何在JavaScript中打印整个HTML元素?

例如:

var elArr = document.getElementsByTagName('link'); 
alert(elArr[0].printEntireElement()); 

//expected output might be 
<link href="/css/common.css" rel="stylesheet" type="text/css">` 

注意,对于链接是没有定义元素outerHTML!

回答

6

使用externalHTML jQuery插件,如this onethis one

+0

妈的,我做到了(http://dbj.org/dbj/?p = 91),但似乎效率很低...但我想不出还有什么更好的呢? – 2013-04-09 18:51:39

0

你可以做这样的事情:

function dump(element) { 
    var a = ["Element dump:"]; 
    for (var k in element) { 
    if (element.hasOwnProperty(k)) { 
     a.push(k + ": " + element[k]); 
    } 
    } 
    a.push("HTML: " + element.innerHTML); 
    alert(a.join('\n')); 
} 

无论你想要的“hasOwnProperty”考还是不,我不知道。

2

如果你不能做outerHtml,请克隆它,创建一个新的div,将克隆放在div中,并获取容器的innerHTML。

+0

请参阅http://stackoverflow.com/questions/867916/creating-a-div-element-in-jquery在jquery中创建一个div。 :) – Steropes 2011-10-05 20:25:05

1
document.getHTML= function(who){ 
    var txt, ax, el= document.createElement("div"); 
    el.appendChild(who.cloneNode(false)); 
    txt= el.innerHTML;  
    ax= txt.indexOf('>')+1; 
    txt= txt.substring(0, ax)+who.innerHTML+ txt.substring(ax); 
    el= null; 
    return txt.replace(/>/g,'>\n'); 
} 
0

如果你想从一个jQuery元素打印整个标签,你可以做这样的事情:

var el = $('<div id="my_div">test div 123</div>'); 

alert(el[0].outerHTML);