2010-04-13 32 views
9

Quiero imprimir todo el elemento, incluido el nombre de la etiqueta, los pares de nombre/valor de atributo y innerHTML. ¿Cómo puedo hacerlo en JavaScript (jQuery)?cómo imprimir todo el elemento HTML en JavaScript?

por ejemplo:

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

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

Tenga en cuenta que para el enlace elemento outerHTML no está definida!

Respuesta

6

Use un plugin outerHTML jQuery, como this one, o this one.

+0

Maldición, lo hice (http://dbj.org/dbj/?p = 91) pero parece tan ineficiente ... Pero no puedo pensar en nada mejor, ¿así y todo? –

0

se puede hacer algo como esto:

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')); 
} 

Tanto si quieres la prueba "hasOwnProperty" o no, no lo sé.

2

Si no puede hacer outerHtml, clonarlo, crear un nuevo div, colocar el clon en el div y agarrar el innerHTML del contenedor.

+0

Consulte http://stackoverflow.com/questions/867916/creating-a-div-element-in-jquery para crear un div en jquery. :) – Steropes

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

Si desea imprimir una etiqueta entera de un elemento de jQuery que podría hacer algo como esto:

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

alert(el[0].outerHTML); 
Cuestiones relacionadas