Как обернуть тексты, включая встроенные элементы, тегом «p» в Plain JavaScript? - PullRequest
0 голосов
/ 09 июля 2020

У меня есть текст, который нужно заключить в тег «p». Как мне добиться этого с помощью простого JavaScript? Я пробовал использовать приведенный ниже сценарий, но в нем отсутствуют встроенные элементы. Доступны решения

var texts = function (first, firstTexts) {
    first = first.firstChild;
    while(first) {
        if (first.nodeType == Node.TEXT_NODE)
            firstTexts.push(first);
        first = first.nextSibling;
    }
};

var textWrap = function (thisText) {
    for(var node of thisText) {
        var addTag = document.createElement('p');
        node.parentNode.insertBefore(addTag, node);
        addTag.appendChild(node);
    }
};

var textElements = [];
texts(document.querySelector(".div"), textElements);
textWrap(textElements);

jQuery. Но простой JavaScript ответ может быть элегантным. Я так много раз искал Stack Overflow и другие сайты, но не нашел подсказки.

Вот мой HTML

<div class="div">
<a href="#read">Learning</a> is <i>growing</i> process. 
<br>
Knowledge <span>removes the fear</span>. 
</div>  

Ожидаемый результат

<div class="div">
<p><a href="#read">Learning</a> is <i>growing</i> process.</p>
<br>
<p>Knowledge <span>removes the fear</span>.</p>
</div>

Я начинаю учиться JavaScript. Друзья, пожалуйста, помогите мне это сделать. Спасибо.

1 Ответ

0 голосов
/ 09 июля 2020

Добавьте id="myDiv" в <div...>, затем:

var innerHTML=document.getElementById("myDiv").innerHTML;
document.getElementById("myDiv").innerHTML="<p>"+innerHTML.split("<br>").join("</p>\n<br>\n<p>")+"</p>";

Одноразовое решение ... Оно будет продолжать добавлять <p> - </p> s ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...