Как правильно увеличивать или уменьшать день в дате?

#javascript #jquery #html

#javascript #jquery #HTML

Вопрос:

Я пытаюсь установить в Javascript в качестве атрибута данных значение h5 при нажатии кнопки текущая дата, дата следующего дня и дата предыдущего дня.

Итак, если сегодня 10 апреля, на следующий день должно быть 11, следующие 12, в то время как предыдущие должны работать в обратном режиме.

Проблема в том, что в моем коде дни устанавливаются два на два или лучше, если сегодня 10 апреля, на следующий день будет 12, а следующий 14, но я не могу понять, в чем проблема.

Вот часть javascript

 function setData(data) {
  if (data == "today") {
    $("#day").attr('data-giorno', new Date());
  }
  
  if (data == "prev") {
    var ieri = new Date($("#day").attr('data-giorno'));
    ieri.setDate(ieri.getDate() - 1);
    $("#day").attr('data-giorno', ieri);
  }
  
  if (data == "next") {
    var domani = new Date($("#day").attr('data-giorno'));
    domani.setDate(domani.getDate()   1);
    $("#day").attr('data-giorno', domani);
  }
}

$('.btn-group input[type="button"][data-calendar-nav]').each(function() {
  var $this = $(this);
  $this.click(function() {
    setData($this.data('calendar-nav'));
  });
});  
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="row  text-center">
  <div class="col">
    <div class="pull-left">
      <h3 id="day" data-giorno="Wed Apr 10 2019 16:53:47 GMT 0200 (Ora legale dell’Europa centrale)">10 aprile 2019</h3>
    </div>
  </div>
  <div class="col">
    <div class="btn-group pull-right">
      <input type="button" class="btn btn-primary btn-sm" data-calendar-nav="prev" value="<<" />
      <input type="button" class="btn btn-light btn-sm" data-calendar-nav="today" value="Oggi" />
      <input type="button" class="btn btn-primary btn-sm" data-calendar-nav="next" value=">>" />
    </div>
  </div>
</div>  

Комментарии:

1. @RoryMcCrossan на самом деле, даже если я задаю ему значение в переменной, результат остается тем же, в то время как в debug он возвращает правильное значение данных imgur.com/NxZnm9l

2. В фрагменте не отображается описанная вами проблема. data-giorno Атрибут увеличивается / уменьшается на день при каждом нажатии.

3. @RoryMcCrossan я только что сделал gif gyazo.com/ae06885c9edd97fe68ff7f38eeb67734 это шоу — моя проблема.

4. Я полагаю, что у вас есть проблема в вашем рабочем коде, однако в коде, который вы разместили в вопросе, проблемы нет, и мы можем эффективно решать проблемы только с помощью кода, который ее воссоздает. Не могли бы вы отредактировать вопрос, чтобы включить больше вашего кода. При этом моим первым предложением было бы удалить обработчик событий в each() цикле, поскольку это вызывает проблемы. Попробуйте просто $('.btn-group input[type="button"][data-calendar-nav]').click(function() { setData($(this).data('calendar-nav')); });

5. Я предполагаю, что вы делаете то же самое снова (добавление / вычитание) всякий раз, когда используете это значение атрибута в другой части вашего кода