13

I want to print the entire element including tag name, attribute name/value pairs and innerHTML. How can I do it in JavaScript (jQuery)?

for example:

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

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

Note that for link element outerHTML is not defined!

5 Answers 5

7

Use an outerHTML jQuery plugin, like this one, or this one.

Sign up to request clarification or add additional context in comments.

1 Comment

Damn, I did it (dbj.org/dbj/?p=91) but it seems so inefficient ... But I can't think of anything better, still ?
2

If you can't do outerHtml, clone it, create a new div, place the clone in the div, and grab the innerHTML of the container.

1 Comment

See stackoverflow.com/questions/867916/… to create a div in jquery. :)
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');
}

Comments

1

If you want to print an entire tag from a jQuery element you could do something like this:

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

alert(el[0].outerHTML);

Comments

0

you can do something like this:

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

Whether you want the "hasOwnProperty" test or not, I don't know.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.