Create string from HTMLDivElement

天涯浪子 提交于 2019-12-03 02:08:41

Variant on Gump's wrapper, since his implementation lifts the target node out of the document.

function nodeToString ( node ) {
   var tmpNode = document.createElement( "div" );
   tmpNode.appendChild( node.cloneNode( true ) );
   var str = tmpNode.innerHTML;
   tmpNode = node = null; // prevent memory leaks in IE
   return str;
}

To print the resulting string on screen (re: escaped)

var escapedStr = nodeToString( node ).replace( "<" , "&lt;" ).replace( ">" , "&gt;");
outputNode.innerHTML += escapedStr;

Note, attributes like "class" , "id" , etc being stringified properly is questionable.

You can use this function (taken from pure.js)

function outerHTML(node){
 return node.outerHTML || new XMLSerializer().serializeToString(node);
}

You can wrap that element into another element and use innerHTML on it:

var wrapper = document.createElement("div");
wrapper.appendChild(day);
var str = wrapper.innerHTML;

Since a few years have passed since the last answers I found that .outerHTML seems now to be supported by all major browsers (see: https://caniuse.com/#search=outerhtml). So in order to get the HTML of an JS element you can do the following:

var day = document.createElement("div");
day.className = "day";
day.textContent = "Random Text";

console.log(day.outerHTML)

Which gives you: <div class="day">Random Text</div>

You need to create text node to add text for your created element like this:

var day = document.createElement("div");
day.className = "day";
// create text node
var txt = document.createTextNode('Random Text');
// add text to div now
day.appendChild(txt);
// append to body
document.body.appendChild(day);

Why would you use createElement if you can also directly parse a string? Like: var string = '<div class="' + class + '">' + text + '</div>';

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!