Подтвердить что ты не робот

Создать строку из HTMLDivElement

То, что я хотел бы сделать, это создать строку из объекта HTMLElement JavaScript. Например:

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

Теперь мы создали объект day HTMLDivElement, можно ли его печатать как строку? например.

<div class="day">Random Text</div>
4b9b3361

Ответ 1

Вариант обертки Gump, так как его реализация лишает цель node из документа.

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

Чтобы напечатать результирующую строку на экране (re: escaped)

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

Обратите внимание, что такие атрибуты, как "класс", "id" и т.д., строятся правильно.

Ответ 2

Вы можете использовать эту функцию (взятую из pure.js)

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

Ответ 3

Вы можете обернуть этот элемент в другой элемент и использовать innerHTML на нем:

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

Ответ 4

Вам нужно создать текст node, чтобы добавить текст для созданного элемента следующим образом:

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

Ответ 5

Почему вы используете createElement, если вы также можете напрямую разобрать строку? Например: var string = '<div class="' + class + '">' + text + '</div>';