Я новичок в JS, и я пытался объединить элементы списка (маркеры) с вводным утверждением списка в один элемент абзаца (с тегом
) Для элементов короткого списка ( максимум 20 слов на элемент). Остальные списки с длинными элементами превращаются в набор абзацев. Каждый абзац представляет собой отдельный элемент списка, которому предшествует вводная инструкция списка
Вывод должен быть: объяснен желаемый вывод примера агрегации списка
Мой код:
function removebps() {
let bps = document.querySelectorAll('li');
bps.forEach(li => {
var firstChild = Array.from(li.children)
if(firstChild != null){
firstChild.forEach(child => {
if(child.tagName == 'UL'){
var secondChild = Array.from(child.children)
secondChild.forEach(secondChild => {
console.log(secondChild.parentElement.parentElement.firstChild)
secondChild.parentElement.parentElement.firstChild.textContent += secondChild.innerText
secondChild.remove();
})
}
})
}
});
}
<html>
<body>
<h2>Other useful privacy and security related materials</h2>
<ul>
<li>technologies and principles, which includes, among other things, more information on
<ul>
<li>how Google uses cookies.
</li><li>technologies we use for advertising.
</li><li>how we <strong>recognize</strong> patterns like faces.</li></ul>
</li><li>A page that explains what data is shared with Google when you visit websites that use our advertising, analytics and social products.
</li><li>The Privacy Checkup tool, which makes it easy to review your key privacy settings.
</li><li>Google’s safety center, which provides information on how to stay safe and secure online.</li></ul>
</ul>
<button onclick="removebps();">Remove Bullet points</button>
</body>
</html>
Есть ли более элегантный способ сделать это?
И как я могу принять во внимание, что при агрегации должно быть не более 20 слов на элемент? И можно ли это сделать рекурсивно для вложенного ul в li пару раз?
Большое спасибо