#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