Сравнение дата-атрибутов и текущей даты

114
19 апреля 2021, 11:50

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

Пока есть вот такой код

<div class="slider-nav">
  <div data-date="2019-07-18" class="slider-nav__item">
    <h3><span>18 июля</span></h3>
  </div>
  <div data-date="2019-07-28" class="slider-nav__item">
    <h3><span>28 июля</span></h3>
  </div>
  <div data-date="2019-07-29" class="slider-nav__item">
    <h3><span>29 июля</span></h3>
  </div>
  <div data-date="2019-07-30" class="slider-nav__item">
    <h3><span>30 июля</span></h3>
  </div>
  <div data-date="2019-07-31" class="slider-nav__item">
    <h3><span>31 июля</span></h3>
  </div>
  <div data-date="2019-08-01" class="slider-nav__item">
    <h3><span>1 августа</span></h3>
  </div>
</div>

Не совсем понимаю, как привести дату к требуемому виду и отобразить

var date = new Date;
var res = date.toISOString().slice(0,10).replace(/-/g,"");
console.log(date);
console.log(res)
var item = $('.slider-nav__item').attr('data-date');
console.log(item);
Answer 1

Получение значений data-атрибутов:

var item = $('.slider-nav__item').data('date');

Получение текущей даты в требуемом виде:

var res = date.toISOString().split('T')[0];

Весь код с сравнением:

var date = new Date;
var res = date.toISOString().split('T')[0];
$('.slider-nav__item').each(function(){
   if ($(this).data('date') === res) {
       // дата слайда равна текущей, делаем что-то
   }
});

UPD:

Если нужно просто обратиться к слайдам с текущей, то можно без цикла, например:

$(".slider-nav__item[data-date='" + res + "']").addClass('current');
READ ALSO
Как посмотреть название class с помощью js

Как посмотреть название class с помощью js

Как возможно скопировать в переменную название класса пренадлежащего body

81
Вынес JS код в отдельный файл. Тормозит

Вынес JS код в отдельный файл. Тормозит

Есть небольшой скрипт на сайтетак вот я давно его писал и поэтому оно написано как попало

98