JavaScript: Jak zmienić string w HTML Element?
Opublikowano: 25.05.2021 - tagi: JavaScript String HTML
Jakiś czas temu stanąłem przed takim problemem: miałem zapisany w string szablon za pomocą HTMLa na przykład:
<div class="foo">
<h2 class="title">Nagłówek</h2>
<p>
Lorem ipsum...
</p>
</div>
I potrzebowałem przekonwertować stringa na HTML Element. Można to zrobić w taki sposób:
const stringToHtml = (htmlString) => {
const parent = document.createElement('div');
parent.innerHTML = htmlString;
return parent.children.item(0);
};
Ta metoda sprawdza się gdy mamy tylko jeden kontener a w środku reszta danych. Dla tej metody nie zadziała:
<div class="foo">
Foo
</div>
<div class="bar">
Bar
</div>
Jak wywołamy funkcję stringToHtml dla takiego szablonu dostaniemy tylko pierwszy element.
Poniżej inna wersja po małej modyfikacji:
const stringToManyHtmlElements = (htmlString) => {
const parent = document.createElement('div');
parent.innerHTML = htmlString;
return parent.children;
};
Jak wywołamy tą funkcję dostaniemy w rezultacie: HTMLCollection. Przykład:
const divs = stringToManyHtmlElements('<div>a</div><div>b</div>');
console.log('Div A: ', divs[0]);
console.log('Div B: ', divs[1]);