@Dzambulat

Как сделать сортировку HTML объектов в зависимости от чисел внутри элемента?

Нужно сделать сортировку HTML элементов в зависимости от числа записанного внутри элемента. Сортировка должна быть по возрастанию и убыванию. Я не знаю как это сделать можете объяснить.

<div class="catalog">
        <div class="filter">
            <div class="MoreToLess btn">От большего к меньшему</div>
            <div class="LessToMore btn">От меньшего к большему</div>
        </div>
        <div class="catalog-items">
            <div class="item">1009$</div>
            <div class="item">309$</div>
            <div class="item">1709$</div> 
            <div class="item">783$</div>
            <div class="item">58$</div> 
            <div class="item">153$</div> 
            <div class="item">289$</div> 
            <div class="item">13$</div>
        </div>
    </div>

const moreToLessBtn = document.querySelector('.MoreToLess');
const lessToMoreBtn = document.querySelector('.LessToMore');

moreToLessBtn.addEventListener('click', ()=>{
    moreToLessBtn.classList.add('active-btn');
    lessToMoreBtn.classList.remove('active-btn');
})
lessToMoreBtn.addEventListener('click', ()=>{
    moreToLessBtn.classList.remove('active-btn');
    lessToMoreBtn.classList.add('active-btn');
})
  • Вопрос задан
  • 127 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
<button data-order="-1">От большего к меньшему</button>
<button data-order="+1">От меньшего к большему</button>

const wrapper = document.querySelector('.catalog-items');
const buttons = document.querySelectorAll('[data-order]');

buttons.forEach(n => n.addEventListener('click', onClick));

function onClick({ target: t }) {
  const order = +t.dataset.order;
  sortChildren(wrapper, el => parseInt(el.innerText) * order);
  buttons.forEach(n => n.classList.toggle('active', n === t));
}

function sortChildren(parent, value) {
  parent.append(...Array
    .from(parent.children, n => [ n, value(n) ])
    .sort((a, b) => a[1] - b[1])
    .map(n => n[0])
  );
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы