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

Как узнать номер элемента div внутри div?

Есть например вот такой вот JSX element, необходимо пронумеровать каждый 'item-title' по иерархии его расположения внутри главного div. Сейчас я написал вручную, но это не правильный вариант, ибо вид зависит от бека.

<div className='settings' id='settings'>
            <div className='settings_item'>
                <h3 className='item-title'>1. Почта </h3>
                <div className='item_content'>
                    ..content
                </div>
            </div>
           <div className='settings_item'>
                <h3 className='item-title'>2.Телефон </h3>
                <div className='item_content'>
                    ..content
                </div>
            </div>
</div>


Попробовал сделать так, но код не работает.

const settingContent = document.getElementById('settings')

    useEffect(() => {
        settingContent?.childNodes.forEach((item, key) => {
            const div = document.createElement('div')
            div.innerHTML = `${key}`
            console.log(item.childNodes.item(0))
            item.childNodes.item(0).appendChild(div)
        } )
    }, [])
  • Вопрос задан
  • 203 просмотра
Подписаться 1 Простой 2 комментария
Решения вопроса 2
@andand44
Можно сделать без js, только с помощью стилей, используя псевдоэлементы
https://jsfiddle.net/oygt1c8s/1/
Ответ написан
yurakostin
@yurakostin
Front-end developer
Исходя из вопроса, ответ скорее всего "нет", но вы этот JSX своими руками выводите?

И если всё-таки нет, то попробуйте

useEffect(() => {
        settingContent?.querySelectorAll('.item-title').forEach((item, index) => {
                item.textContent = `${index + 1}. ${item.textContent}`
        })
    }, [])


UPD:
Только-только осознал, что раз jsx, значит скорее всего реакт, а значит имена классов дополняются разными хешами, и доступ к элементам можно получить через ref

Но вариант с css гораздо лучше и правильнее =)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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