gpt4 book ai didi

JavaScript 代码返回 NaN 而不是数值

转载 作者:行者123 更新时间:2023-12-03 10:06:37 25 4
gpt4 key购买 nike

当我将下面的代码输入 jsfiddle 时,它​​完全按照我想要的方式工作。然而,当我将其实现到我的项目中时,该值返回为 NaN。

<script type="text/javascript">
$(function () {
$('#datepicker8').datepicker({
showOnFocus: false,
showTrigger: '#calImg',
beforeShowDay: $.datepicker.noWeekends,
pickerClass: 'noPrevNext',
dateFormat: "dd-mm-yy", changeMonth: true, changeYear: true,
onSelect: function (dateStr) {
var min = $(this).datepicker('getDate');
$('#datepicker9').datepicker('option', 'minDate', min || '0');
datepicked();
}
});
$('#datepicker9').datepicker({
showOnFocus: false,
showTrigger: '#calImg',
beforeShowDay: $.datepicker.noWeekends,
pickerClass: 'noPrevNext',
dateFormat: "dd-mm-yy", changeMonth: true, changeYear: true,
onSelect: function (dateStr) {
var max = $(this).datepicker('getDate');
$('#datepicker8').datepicker('option', 'maxDate', max || '+1Y');
datepicked();
}
});
});


var datepicked = function () {
var from = $('#datepicker8');
var to = $('#datepicker9');
var nights = $('#CalcDate1');

var startDate = from.datepicker('getDate');
startDate.setDate(startDate.getDate() + 1);

var endDate = to.datepicker('getDate')


// Validate input
if (endDate && startDate) {


// Calculate days between dates
var millisecondsPerDay = 86400 * 1000; // Day in milliseconds
startDate.setHours(0, 0, 0, 1); // Start just after midnight
endDate.setHours(23, 59, 59, 999); // End just before midnight
var diff = endDate - (startDate + 1); // Milliseconds between datetime objects
var days = Math.ceil(diff / millisecondsPerDay);

// Subtract two weekend days for every week in between
var weeks = Math.floor(days / 7);
var days = days - (weeks * 2);

// Handle special cases
var startDay = startDate.getDay();
var endDay = endDate.getDay();

// Remove weekend not previously removed.
if (startDay - endDay > 1)
var days = days - 2;

// Remove start day if span starts on Sunday but ends before Saturday
if (startDay == 0 && endDay != 6)
var days = days - 1

// Remove end day if span ends on Saturday but starts after Sunday
if (endDay == 6 && startDay != 0)
var days = days - 1

nights.val(days);
}
}
</script>

我添加了下面的代码,认为它可以处理 NaN,但它没有起作用。

if (!isNaN(days)) {
document.getElementById('CalcDate1').value = days;
}
else {
document.getElementById('CalcDate1').value = "";
}

jsfiddle 链接是 JsFiddle

最佳答案

这里是这一行:

 var diff = endDate - (startDate + 1);

这就是导致问题的原因。在你的 fiddle 上工作的地方

var diff = endDate - startDate;

这导致了问题,因为 endDate 和 startDate 是对象,而您正尝试将对象与数字连接起来

关于JavaScript 代码返回 NaN 而不是数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30326618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com