Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   строка содержит html код (https://javascript.ru/forum/events/85578-stroka-soderzhit-html-kod.html)

Dmitriy154 28.10.2023 17:14

строка содержит html код
 
Подскажите, наиболее рациональное решение:
Имеется строка содержащая весь html-код страницы. В этом коде есть <div id='stage'>...</div>.
Каким образом можно получить содержимое данного контейнера? Как я понимаю регулярками здесь тяжеловато выделить.
Либо воссоздать document.documentElement и через stage.innerHTML получить содержимое?

voraa 28.10.2023 17:52

const cont = document.createElement('template');
cont.innerHTML = '...<div id='stage'>...</div>...';
const result = cont.content.getElementById('stage').innerHTML;

Dmitriy154 28.10.2023 18:11

Огромное спасибо!

voraa 28.10.2023 18:32

Но если в строке полный код html начиная с <!DOCTYPE html>
то будет правильнее создавать полный документ
const doc = document.implementation.createHTMLDocument('');
doc.documentElement.innerHTML = '...<div id='stage'>...</div>...';
const result = doc.getElementById('stage').innerHTML;

рони 28.10.2023 18:37

Dmitriy154,
let parser = new DOMParser();
let html = `...<div id='stage'>12345</div>...`;
let doc = parser.parseFromString(html, "text/html");
alert(doc.getElementById('stage').innerHTML);

Dmitriy154 29.10.2023 14:09

Спасибо, тоже интересный подход

Dmitriy154 29.10.2023 14:12

Цитата:

Сообщение от voraa (Сообщение 553800)
Но если в строке полный код html начиная с <!DOCTYPE html>
то будет правильнее создавать полный документ
const doc = document.implementation.createHTMLDocument('');
doc.documentElement.innerHTML = '...<div id='stage'>...</div>...';
const result = doc.getElementById('stage').innerHTML;

понял, через temlate тоже работает


Часовой пояс GMT +3, время: 01:52.