Задать вопрос
@absoluteST

Как сделать порядковый номер для соседа снизу?

Добрый день, я недавно начал изучать js, есть задачка которую нужно решить, но у меня не хватает опыта и я не нашёл работающего для меня решения моей проблемы, пытался сделать с помощью nextElementSibling, увы ничего.
Сама задача: для элемента #elem, найдите его соседа снизу и добавьте ему в начало порядковый номер.
<ul>
	<li>text</li>
	<li>text</li>
	<li id="elem">text</li>
	<li>text</li>
	<li>text</li>
</ul>

Я пробовал, но у меня ничего не получается.
  • Вопрос задан
  • 183 просмотра
Подписаться 1 Простой 6 комментариев
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Чьего соседа надо пронумеровать:

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, '. '));
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Absolute138
document.querySelectorAll('ul > li').forEach((el, i)=>{
  if(el.id == 'elem'){ 
      el.nextElementSibling.prepend(i+2 + '. ');
      return false;
  }
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы