Преобразование JS-строки в HTML-объект: поиск и стилизация

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Если у вас нет времени на подробности, вот краткое решение вашей задачи:

JS
Скопировать код
const str = '<div>Это HTML-контент</div>';
const htmlObject = new DOMParser().parseFromString(str, 'text/html').body.firstChild;

В итоге вы извлекаете HTML-элемент непосредственно из строки. Это не какая-то магия, а возможности класса DOMParser.

От простого к сложному: разные методы

Если вам нужно преобразовать простой текст без HTML-тегов, используйте метод createTextNode:

JS
Скопировать код
const textStr = 'Слезы единорога';  // Ни один единорог, конечно, не пострадал...
const textNode = document.createTextNode(textStr);
document.body.appendChild(textNode);  // ...текст лишь для примера.

При использовании данного метода вы избавляетесь от риска XSS-атак, так как HTML-теги не выполняются.

Если же вам нужно преобразовать строку с HTML-узлами и атрибутами в DOM-объект:

  1. Создайте контейнерный элемент:

    JS
    Скопировать код
     var container = document.createElement('div');
  2. Присвойте ваш HTML-код внутрь контейнера:

    JS
    Скопировать код
     container.innerHTML = '<p>Волшебная пыль</p>';
  3. Вставьте содержимое контейнера в DOM:

    JS
    Скопировать код
     var newElement = container.firstChild;
     document.body.appendChild(newElement);

Основы динамики: подстановка значений «на лету»

Используя шаблонные строки, можно динамически вставлять значения:

JS
Скопировать код
const mythicalCreature = 'Дракон';
const message = `<div>${mythicalCreature}, изрыгни огонь!</div>`;
container.innerHTML = message;

Изменение стиля элемента

Чтобы поменять стиль элемента, воспользуйтесь свойством style:

JS
Скопировать код
newElement.style.marginTop = '10px';  // Элемент поднимется на 10px.
newElement.style.color = 'blue';      // Элемент станет синим.

Визуализация

Давайте наглядно представим превращение строки JavaScript в HTML-объект:

Markdown
Скопировать код
Шаг 1: Исходный материал (Строка)
🔠 – "<div>Привет, мир</div>"

Преобразуем строку в объект:

JS
Скопировать код
var htmlString = "<div>Привет, мир</div>";
var htmlObject = new DOMParser().parseFromString(htmlString, 'text/html').body.firstChild;

И получаем вот такой результат:

Markdown
Скопировать код
Шаг 2: Конечный результат (HTML-объект)
🏗️🏠 – [🚪 "Привет, мир" 🖼️]

DOMParser — это ваш инструмент для преобразования строк в "живой" HTML.

jQuery: волшебная палочка

Если вы используете jQuery, все становится еще проще:

JS
Скопировать код
const $htmlObject = $('<div>').html('<p>Волшебство с помощью jQuery</p>');
$('body').append($htmlObject);

Теперь $htmlObject — это полноценный HTML-элемент в контексте jQuery.

Остерегайтесь опасных подводных камней

Помните, что если у вашего элемента есть идентификатор (ID):

  • Добавляйте элемент в DOM до использования метода getElementById.
  • Помните, что ID элементов должны быть уникальными в пределах документа.

Попробуйте на практике

Вы можете попрактиковаться на нашем интерактивном "полигоне": Преобразование строки в HTML-объект.

HTML-объект: ваши новые возможности

После преобразования строки JavaScript в HTML-объект, вы получаете полный контроль над ним:

  • Можете назначить ему задачи:

    JS
    Скопировать код
      newElement.addEventListener('click', (e) => { console.log('Выполнено!'); });
  • Можете украсить его атрибутами:

    JS
    Скопировать код
      newElement.setAttribute('data-custom', 'значение');

Обращение ко всем элементам

Если из строки получилось несколько элементов, вы можете работать с каждым из них так:

JS
Скопировать код
const minions = Array.from(htmlObject.children);
minions.forEach((minion) => {
  // Работайте с каждым элементом...
});

Полезные материалы

  1. DOMParser – Веб-API | MDN — Изучите класс DOMParser и преобразовывайте строки в HTML-объекты.
  2. Document: createElement() method – Веб-API | MDN — Узнайте, как создавать HTML-элементы при помощи метода JavaScript createElement.
  3. Element: innerHTML property – Веб-API | MDN — Безопасная манипуляция HTML через строку с использованием свойства innerHTML.
  4. .html() | Документация jQuery API — Освойте работу со строками HTML в jQuery.
  5. Шаблонные строки (Template literals) – JavaScript | MDN — Создавайте динамический HTML с помощью шаблонных строк.
  6. javascript – Преобразование строки HTML в DOM-элементы? – Stack Overflow — Извлеките знания из опыта сообщества разработчиков о преобразовании HTML-строк в DOM-элементы.
  7. JavaScript DOM HTML — Учитесь создавать и изменять HTML с помощью методов JavaScript DOM.