@M1sty1
Занимаюсь версткой

Как написать функцию диапазона цен?

Здравствуйте.Голову ломаю уже час,что не пробовал,не выходит.
В общем,есть блоки,в которых есть P,в котором я прописал data-filter="например,3000",в разных блоках разные значения.
В скрипте взял переменную массив самих блоков и вторая переменная массив P.
Пробовал написать функцию

let assortments = document.querySelectorAll(".product__item");
let price = document.querySelectorAll(".product__item .product__price");
let range = document.querySelectorAll(".input__range");
let button = document.querySelector(".form-button__apply");
button.addEventListener('click',filterPrice);
function filterPrice()
{
    for (let product of price)
    {
        for (product1 of assortments)
        {
            product1.classList.add('none');
            if (Number(product.dataset.filter) >= Number(range[0].value)   &&  Number(product.dataset.filter) <= Number(range[1].value))
            {
               
                product1.classList.remove('none');
             
            }
            else 
            {
                console.log('111');
            }
        }
        

    }
    
}


Но после прохода функции всё остаётся на местах.
Делал проверки,алгоритм находит те значения,которые входят в условие,но почему-то не делает их блоками.
Может я и саму функцию неправильно составил,помогите,пожалуйста.
P.S.(В js новичок,если совсем всё криво,не судите строго:))
  • Вопрос задан
  • 124 просмотра
Пригласить эксперта
Ответы на вопрос 1
@V0vash
Можно взять все .product__item => перебирая их найти в них значения data-filter -> перевести в чиселко ->
по условию скрыть то, что нужно скрыть

let assortments = document.querySelectorAll('.product__item');

assortments.forEach(item =>{
  let any = parseInt(item.getElementsByTagName("P")[0].getAttribute("data-filter"));
  if(any < 2000){
    item.classList.add('none');
  }
});


весь прогон обернуть в функцию, передать туда значению по которому желаем фильтровать
Ответ написан
Ваш ответ на вопрос

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

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