Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从多个日期输入计算总天数_Javascript_Html_Css_Date - Fatal编程技术网

Javascript 从多个日期输入计算总天数

Javascript 从多个日期输入计算总天数,javascript,html,css,date,Javascript,Html,Css,Date,我在一个网站上工作,以计算用户在我们这里停留的天数。我考虑到他们可能在我们这里有过多次逗留。因此,我想计算一下,从他们选择的多个日期开始,他们确实与我们在一起的总天数 但是,我的计算按钮没有给出预期的结果。单周期运行良好 这是我的密码: 函数calculateEmp(){ var startDate1=document.getElementById(“startDate1”).value; var endDate1=document.getElementById(“endDate1”).val

我在一个网站上工作,以计算用户在我们这里停留的天数。我考虑到他们可能在我们这里有过多次逗留。因此,我想计算一下,从他们选择的多个日期开始,他们确实与我们在一起的总天数

但是,我的计算按钮没有给出预期的结果。单周期运行良好

这是我的密码:

函数calculateEmp(){
var startDate1=document.getElementById(“startDate1”).value;
var endDate1=document.getElementById(“endDate1”).value;
var startDate2=document.getElementById(“startDate2”).value;
var endDate2=document.getElementById(“endDate2”).value;
var dvtextless60=document.getElementById(“dvtextless60”);
var dvtext61182=document.getElementById(“dvtext61182”);
var dvtextmore183=document.getElementById(“dvtextmore183”);
var Difference_In_Time1=新日期(endDate1).getTime()-新日期(startDate1).getTime();
var日差1=日差/(1000*3600*24);
var Difference_In_Time2=新日期(endDate2).getTime()-新日期(startDate2).getTime();
var差值(单位:天)2=差值(单位:时间)(1000*3600*24);
如果(日差1<0 | |日差2<0){//负总天数(开始日期晚于结束日期)
document.getElementById(“dvtextless0”).style.display=“inline”;
}否则如果(日差1>0和日差1<60 |日差2>0和日差2<60){//0<总天数<60
document.getElementById(“dvtextless60”).style.display=“block”;
}否则如果(日差1>60和日差1 60和日差2 182 |日差2>182){//超过182天
document.getElementById(“dvtextmore183”).style.display=“block”;
}else{//NaN(单击计算而不输入日期)
document.getElementById(“dvtextNoStartDate”).style.display=“inline”;
document.getElementById(“dvtextNoEndDate”).style.display=“block”;
}
document.getElementById(“numofdays”).innerHTML=“总住宿:”+Difference\u In_days 1和&Difference\u In_days 2;
document.getElementById(“displaystartend1”).innerHTML=getFormattedDate(startDate1)+“to”+getFormattedDate(endDate1);
document.getElementById(“displaystartend1”).innerHTML=getFormattedDate(startDate2)+“to”+getFormattedDate(endDate2);
}
函数showArrDepDate(){//当选择“是”时
document.getElementById(“dvPPbtn”).style.display=“block”;
}
函数addDate1(){//当选择“是”时
document.getElementById(“addDate1”).style.display=“block”;
}
函数calculateDate(){
var startDate1=document.getElementById(“startDate1”).value;
var endDate1=document.getElementById(“endDate1”).value;
var startDate2=document.getElementById(“startDate2”).value;
var endDate2=document.getElementById(“endDate2”).value;
var arrDate=document.getElementById(“arrDate”).value;
var depDate=document.getElementById(“depDate”).value;
var endToDep_Days1=新日期(depDate).getTime()-新日期(endDate1).getTime();
var endToDep_Days2=新日期(depDate).getTime()-新日期(endDate2).getTime();
var arrToStart_Days1=新日期(startDate1).getTime()-新日期(arrDate).getTime();
var arrToStart_Days2=新日期(startDate2).getTime()-新日期(arrDate).getTime();
var emp=new Date(endDate1.getTime()-new Date(startDate1.getTime();
var emp=new Date(endDate2.getTime()-new Date(startDate2.getTime());
var totalInDays1=(截止日期1+截止日期1+环境管理计划)/(1000*3600*24);
var totalInDays2=(截止日期2+截止日期2+环境管理计划)/(1000*3600*24);
如果(总天数1<60 | |总天数2<60){
document.getElementById(“dvtextless60”).style.display=“block”;

}否则如果(totalInDays1>60&&totalInDays1 60&&totalInDays2您当前的代码引发了一些异常。只需快速查看一下,就会发现您的选择器不正确,例如,ID startDate1不存在,其他一些选择器也会失败。看起来您的大多数问题可能与您访问数据的方式有关,并且您没有参与其中例如,考虑到数据不存在时会发生什么情况,您可能需要添加一些检查值是否为null

我不知道为什么要使用香草JavaScript,但有一些东西可以帮助您,比如jQuery,也许还有用于日期处理的矩js

我建议在本地的纯HTML文档中或者在像JSFIDLE这样的沙箱中运行它,并注意错误,它们会让您很好地了解失败的地方

我建议不要一直复制/粘贴,那样你可能会对类和选择器迷路

编辑1:

  • 代码不完整,HTML不会关闭pre或表单标记
  • HTML中的ID不正确,开始日期和结束日期均命名为startDate和endDate,但JS正在调用startDate1、endDate1、startDate2和endDate2。您需要更改这些名称
  • 变量totalInDays1和totalInDays2与JS在calculateDate函数中试图访问的内容不匹配(Total_in_Days1和Total_in_Days2)
  • 您正在绑定访问时间差,但您只有时间差1和时间差2,您需要在calculateEmp中更改它,在calculateEmp中定义时间差1和时间差2
在这些修复之后,您的代码将停止抛出错误。我将检查您的实现,并确保您在执行计算时访问了正确的变量

看来你的问题是你复制了你的
//startDate  = '2021-05-01' YYYY-MM-DD;
//endDate    = '2021-06-02' YYYY-MM-DD;
function total_days(start_date, end_Date) {
    const diffInMs = new Date(endDate) - new Date(startDate);
    //Converting milliseconds to days
    return (diffInMs / (1000 * 60 * 60 * 24));
}