Не представляю, где вы этот код взяли, но часть элементов там вообще от балды.
Во-первых,
costButton, на который вяжется обработчик клика в конце, никак не определен.
Очевидно, это кнопка сортировки, поэтому заменяем на
document.querySelector('#cost-button')
Во-вторых,
const elementsContainer = document.querySelector('.elements__lis');.
Похоже,
list, а не
lis - опечатка :)
В-третьих,
costArrow - это, похоже, должна быть картинка, показывающая направление сортировки.
Её нет, значит, убираем
costArrow, убираем аргумент
arrow у
sortCard и у нее же убираем строку
toggleArrow(arrow); (можно так же и саму
function toggleArrow выкинуть).
Вуаля, все работает.
const allElements = document.querySelectorAll('.elements__item');
const allPrice = '.elements__item-title_cost';
const elementsContainer = document.querySelector('.elements__list');
//функция по сортировке
function sortCard(elements, type) {
let sortingObj = {};
elements.forEach((element, index) => {
const elementValue = parseInt(element.querySelector(type).textContent.replace('руб.', '').replace(/\s+/g, ''));
sortingObj[elementValue] = {'element': element, 'index': index};
});
const keys = Object.keys(sortingObj);
function numberSort(a, b) {
a = parseInt(a);
b = parseInt(b);
if (a < b) return -1;
if (a > b) return 1;
}
keys.sort(numberSort);
keys.map(function(key, index){
elementsContainer.insertAdjacentElement('beforeend', sortingObj[key]['element']);
});
}
document.querySelector('#cost-button').addEventListener("click", function() {
sortCard(allElements, allPrice);
})