<ul>
<li>text</li>
<li>text</li>
<li id="elem">text</li>
<li>text</li>
<li>text</li>
</ul>
const parent = document.querySelector('ul');
const selector = '#elem';
const elem = parent.querySelector(selector)?.nextElementSibling;
if (elem) {
const num = 1 + Array.prototype.indexOf.call(parent.children, elem);
elem.textContent = num + '. ' + elem.textContent;
}
const elem = parent.querySelector(`${selector} + *`);
if (elem) {
let num = 1;
for (let n = elem; n = n.previousElementSibling; num++) ;
elem.insertAdjacentText('afterbegin', `${num}. `);
}
const index = -~[...parent.children].findIndex(n => n.matches(selector));
if (index) {
parent.children[index]?.prepend(''.concat(-~index, '. '));
}