Как применить стили к новодобавленному элементу?

JS в очередной раз удивил. Есть простейший скрипт, который преобразует строку с HTML в DOM Element, и прикрепляет элемент к указанному контейнеру:

<div class="container">
<div class="red">Red</div>
</div>

.red {
background: red;
}

function htmlToDOM(html)
{
    let parser = new DOMParser();
    return parser.parseFromString(html, "text/xml").documentElement;
}

let code = '<div class="red">Red</div>';

let element = htmlToDOM(code);
let container = document.getElementsByClassName('container')[0];
container.appendChild(element);


https://jsfiddle.net/a2dmtabt/

Всё отлично, элемент получается такой же, как соседние, НО без стилей.
Что за чертовщина, и что прописать, чтобы к нему сразу применялись указанные в CSS стили?
  • Вопрос задан
  • 248 просмотров
Решения вопроса 1
Audiophile
@Audiophile Автор вопроса
Оказалось, что мой код работает-таки в Firefox, например.

Решил проблему сменой xml на Html. Правда, пришлось выдирать элемент из html/body.

function htmlToDOM(html)
{
    let parser = new DOMParser();
    return parser.parseFromString(html, "text/html").getElementsByTagName('body')[0].firstChild;
}


Другой возможный вариант:
function htmlToDOM(html)
{
    let temp = document.createElement("div");
    temp.innerHTML = html;
    return temp.firstChild;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы