Как nouislider помогает в фильтрации элементов?

Много информации представлено о том, как добавить ползунок на страницу, но как осуществить фильтрацию айтемов с его помощью? Например, как сделать так, чтобы при использовании ползунка отображались товары, соответствующие ценовому диапазону на странице?
  • 5 марта 2025 г. 6:04
Ответы на вопрос 1
Для осуществления фильтрации элементов с помощью библиотеки noUiSlider вам нужно будет выполнить несколько шагов. Предположим, что вы хотите использовать ползунок для фильтрации товаров по цене. Вот примерный алгоритм работы с noUiSlider и фильтрации элементов.

### Шаг 1: Установка noUiSlider

Если вы еще не установили noUiSlider, добавьте его в ваш проект:

```html
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/noUiSlider/14.6.3/nouislider.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/noUiSlider/14.6.3/nouislider.min.js"></script>
```

### Шаг 2: Создание HTML-структуры

Создайте разметку для вашего ползунка и элементов, которые вы будете фильтровать:

```html
<div id="price-slider"></div>
<button id="filter-button">Применить фильтр</button>

<div id="products">
    <div class="product" data-price="100">Товар 1 - 100$</div>
    <div class="product" data-price="200">Товар 2 - 200$</div>
    <div class="product" data-price="300">Товар 3 - 300$</div>
    <div class="product" data-price="400">Товар 4 - 400$</div>
</div>
```

### Шаг 3: Инициализация noUiSlider

Инициализируйте ползунок с помощью JavaScript и задайте диапазон значений:

```javascript
var slider = document.getElementById('price-slider');

noUiSlider.create(slider, {
    start: [100, 400],
    connect: true,
    range: {
        'min': 0,
        'max': 500
    },
    tooltips: true,
    format: {
        to: function (value) {
            return Math.round(value);
        },
        from: function (value) {
            return Math.round(value);
        }
    }
});
```

### Шаг 4: Фильтрация товаров

Добавьте обработчик события на кнопку, чтобы отфильтровать товары в соответствии с выбранным диапазоном цен:

```javascript
document.getElementById('filter-button').addEventListener('click', function() {
    var priceRange = slider.noUiSlider.get(); // Получаем значение выбранного диапазона
    var minPrice = parseFloat(priceRange[0]);
    var maxPrice = parseFloat(priceRange[1]);

    var products = document.querySelectorAll('.product');

    products.forEach(function(product) {
        var productPrice = parseFloat(product.getAttribute('data-price'));

        // Проверяем, соответствует ли цена товара диапазону
        if (productPrice >= minPrice && productPrice <= maxPrice) {
            product.style.display = ''; // Показываем товар
        } else {
            product.style.display = 'none'; // Скрываем товар
        }
    });
});
```

### Итог

Теперь, когда пользователь перемещает ползунок и нажимает кнопку "Применить фильтр", на странице будут отображаться только те товары, цена которых находится в выбранном диапазоне. Вы также можете улучшить интерфейс, добавив обработчик событий для реализации фильтрации в реальном времени без необходимости нажимать кнопку.
Похожие вопросы