Как исправить ошибку «Дата окончания.getDay не является функцией»?

#jquery

Вопрос:

Я получаю эти ошибки в консоли Chrome:

 jquery.min.js:2 jQuery.Deferred exception: endDate.getDay is not a function TypeError: endDate.getDay is not a function
    at HTMLDocument.<anonymous> (https://www.example.it/wp-content/uploads/siteground-optimizer-assets/siteground-optimizer-combined-js-40bb2684c8af3cfe5929a54eeb793adf.js:12:48)
    at e (https://c0.wp.com/c/5.8.1/wp-includes/js/jquery/jquery.min.js:2:30038)
    at t (https://c0.wp.com/c/5.8.1/wp-includes/js/jquery/jquery.min.js:2:30340) undefined
S.Deferred.exceptionHook @ jquery.min.js:2

jquery.min.js:2 Uncaught TypeError: endDate.getDay is not a function
    at HTMLDocument.<anonymous> (siteground-optimizer-combined-js-40bb2684c8af3cfe5929a54eeb793adf.js:11)
    at e (jquery.min.js:2)
    at t (jquery.min.js:2)

jquery.min.js:2 Uncaught TypeError: endDate.getDay is not a function
    at HTMLDocument.<anonymous> (siteground-optimizer-combined-js-40bb2684c8af3cfe5929a54eeb793adf.js:12)
    at e (jquery.min.js:2)
    at t (jquery.min.js:2)
 

У меня есть несколько таких функций в моем functions.php файл, который я использую для отображения даты доставки услуг, которые я предлагаю на своем веб-сайте:

 jQuery(function($) {
  $.ajaxSetup({
    cache: false
  });
  if ($('body.page-id-5749').length > 0) {
    var monthNames = ["gennaio", "febbraio", "marzo", "aprile", "maggio", "giugno", "luglio", "agosto", "settembre", "ottobre", "novembre", "dicembre"];
    var dayNames = ["domenica", "lunedì", "martedì", "mercoledì", "giovedì", "venerdì", "sabato"];
    var holidays = [
      [2019, 12, 8], 8 DICEMBRE 2019[2019, 12, 25], 25 DICEMBRE 2019
    ];
    var endDate = "",
      noOfDaysToAdd = $(".val-mastering-basic").html(),
      count = 0;
    var someDate = new Date(new Date().toDateString());
    var numberOfDaysToAdd = noOfDaysToAdd;
    someDate.setDate(someDate.getDate());
    while (count < noOfDaysToAdd) {
      endDate = new Date(someDate.setDate(someDate.getDate()   1));
      var isHoliday = holidays.find(holiday => endDate.getTime() == new Date(holiday[0], holiday[1] - 1, holiday[2]).getTime());
      if (isHoliday) {
        console.log('holiday, skipping');
      } else if (endDate.getDay() != 7 amp;amp; endDate.getDay() != 8) { // 7 E 8 PER NON SALTARE WEEKEND, 0 e 6 PER SALTARLI
        count  ;
      }
    }
    $('#date-mastering-basic').html(dayNames[endDate.getDay()]   ' '   endDate.getDate()   ' '   monthNames[endDate.getMonth()]);
  }
}); 
 

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

1. В случае, если это noOfDaysToAdd не >count так endDate==="" , учитывая, что noOfDaysToAdd это строка html , это странное сравнение.

2. Всегда отлаживайте то, что у вас на самом деле есть в момент ошибки — в этом случае console.log("[" endDate "]") это даст вам []

3. В зависимости от ваших требований, вы могли бы это сделать: var endDate = new Date(), тогда у вас не возникнет проблемы endDate с неправильной настройкой строки

4. Решенный. Большое вам спасибо @freedomn-m