@toyvo_glumov

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

Использую на страницах сайта следующий скрипт, чтобы переместить блок (#box1) из одного места внутрь другого блока (#box2) .

<script>
document.addEventListener('DOMContentLoaded', function() {
	document.querySelector('#box2').appendChild(document.querySelector('#box1'));
}, false);
</script>


Нужно сделать, чтобы перемещаемый блок вставлялся не внутрь, а после html комментария <!--more--> на странице. Как правильно изменить данный скрипт?
  • Вопрос задан
  • 200 просмотров
Решения вопроса 1
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
Не знаю как правильно.
Скорее всего нельзя напрямую обратиться к ноде комментария. Но можно достать ее перебором всех нод.
Вам нужна рекурсивная функция обхода всех нод документа, в которой вы будете проверять тип ноды и ее содержимое.
Примечание: если ваш комментарий располагается на странице не рандомно, а подчиняется ккакой-то логике, например, всегда находится в каком-то узле, к кторому можно обратиться по селектору, то лучше просто перебрать дочерние ноды этого узла.

var e = ... // берем элемент
    var childs = e.childNodes,
        count = childs.length;
    var i = 0;
    while(i < count) {
        if (
            (childs[i].nodeType == 8) // тип 8 - это как раз комментарий
            &&(/more/.test(childs[i].nodeValue)) // а здесь проверяем наличие слова more внутри комментария
        ) {
            var container = document.createElement('div');
            container.innerHTML = '<div class="'+childs[i].nodeValue+'"></div>';
            childs[i].parentNode.replaceChild(container.firstChild, childs[i]);
        }
        i++;
    }
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Используйте не .append, а .after или .before
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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