2015-03-16 2 views
0

Как получить HTML-код элемента в JavaScript с тегами текущего элемента?Получить HTML-код элемента (теги элемента innerHTML +)

Например

<body><div><div class="big"><p>sometext</p></div></div></body> 

var x = document.getElementsByClassName('big')[0] 

и теперь я хочу получить HTML код х:

'<div class="big"><p>sometext</p></div>' 

не только:

'<p>sometext</p>' like innerHTML. 

Есть ли более простой способ, чем это?

var div = document.createElement("div"); 
div.id='_fooo'; var parent = x.parentNode; 
parent.insertBefore(div, x); 
div.appendChild(x); 
document.getElementById('_fooo').innerHTML 
+0

[ 'outerHTML'] (https://developer.mozilla.org/en-US/docs/Web/API/Element/outerHTML), хотя [' input'] (https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Input) является пустым элементом и не может содержать HTML или любой другой контент. – Teemu

+0

Это именно то, что мне нужно! Благодарю. – terjanq

ответ

1

Прежде всего, ваш html-блок имеет ошибку. <input> - пустой элемент, и он не может иметь дочерние элементы. Таким образом,

<input type="submit" class="big"><p>sometext</p></input> 

недействительный HTML.

http://stackoverflow.com/questions/13629410/create-input-as-child-of-input

В любом случае, ответ на ваш вопрос атрибут 'outerHTML'.

Замена ваш <input> тег с <div>

<div type="submit" class="big"><p>sometext</p></div> 

var x = document.getElementsByClassName('big')[0]; 
var output = x.outerHTML // returns '<div type="submit" class="big"><p>sometext</p></div>' 
+0

Элемент, являющийся встроенным элементом, не означает, что он не может иметь контент, большая часть встроенные элементы могут иметь контент. Пустой элемент (ранее известный как элемент void) будет правильным термином. – Teemu

+0

Спасибо за исправление. Вы правы, я обновил ответ. – ohannes

0

Получить родителя вашего текущего элемента и вызовите получить innerHTML на это, но это даст вам все дети, так что вы можете создать родительский DIV для вашего элемента просто так что вы можете прочитать его содержание.

пример

var x = document.getElementsByClassName('big')[0].parentElement.innerHTML 

здесь ваш родитель будет тело на основе данного примера, и он получит следующий внутри, который является то, что вы хотите.

+0

Я знаю этот метод, но что, если у меня больше детей? Есть ли еще не простой способ? var div = document.createElement ("div"); div.id = '_ fooo'; var parent = this.parentNode; parent.insertBefore (div, this); div.appendChild (this); document.getElementById ('_ fooo'). InnerHTML – terjanq

+0

попробуйте идею outerhtml для элемента ввода, который может дать вам именно то, что вам нужно. –

Смежные вопросы