Javascript 如何使用Java脚本从用户在asp.net中输入的数据中获取以天为单位的两个日期之间的差异

Javascript 如何使用Java脚本从用户在asp.net中输入的数据中获取以天为单位的两个日期之间的差异,javascript,c#,asp.net,datetime,Javascript,C#,Asp.net,Datetime,我想做一些计算,得到用户在文本框中输入的两个日期的差值,并将其显示在标签或文本框中。 我的其中一个日期是固定日期,显示在名为Asofdate的标签中。 用户将在DOL文本框中输入第二个日期 以下是我的html代码: <tr> <td style="font-weight: bold; text-align:left; width:80px">&nbsp;As of Date: </td> <td> <

我想做一些计算,得到用户在文本框中输入的两个日期的差值,并将其显示在标签或文本框中。 我的其中一个日期是固定日期,显示在名为Asofdate的标签中。 用户将在DOL文本框中输入第二个日期

以下是我的html代码:

<tr>
    <td style="font-weight: bold; text-align:left; width:80px">&nbsp;As of Date: </td>
    <td>
        <asp:Label ID="lblAsOfDate" runat="server" Text="04/15/2018">/asp:Label>
    </td>
</tr>

<tr>
    <td class="ColWidth">
        <span class="red" style="color: #FF0000; font-weight: bold;">*</span>
        <asp:Label ID="lblDOL" runat="server" Text="DOL "></asp:Label>
    </td>
    <td class="InputCallWidth" style="vertical-align: top;">
        <asp:TextBox ID="txtDOL" runat="server" placeholder="MM/DD/YYYY"
             Height="25px" Width="120px" Enabled="True" onkeyup="getTotalDaysDown();" 
             ClientIDMode="Static">
        </asp:TextBox>
        <br />                        
        <ajaxToolkit:MaskedEditExtender ID="MaskedEditExtender3"
                runat="server"
                ClearMaskOnLostFocus="true"
                AutoComplete="false"
                MaskType="Date"
                Mask="99/99/9999"
                InputDirection="LeftToRight"
                TargetControlID="txtDOL">
        </ajaxToolkit:MaskedEditExtender>
        <ajaxToolkit:MaskedEditValidator ID="MaskedEditValidator3"
                ControlExtender="MaskedEditExtender3"
                runat="server"
                ControlToValidate="txtDOL"
                IsValidEmpty="False"
                EmptyValueMessage="Date is Required!"
                Display="Dynamic" ValidationGroup="logSave" 
                InvalidValueMessage='Invalid Date!' Font-Size="Smaller" 
                Font-Bold="True" ForeColor="Red"
                MaximumValue="12/31/9999" MaximumValueMessage="Invalid Date!" 
                MinimumValue="1/1/1754 " MinimumValueMessage="Invalid Date!">
         </ajaxToolkit:MaskedEditValidator>
    </td>
<tr>

截至日期:
/asp:标签>
*

这是我使用脚本进行计算的部分。 这是公式:(AsOfDate-Dol)+1


函数getTotalDaysDown(){
//这是我遇到问题的部分。我无法从标签和文本框中获取值。
var AsOfDate=document.getElementById(“lblAsOfDate”).value;
var DOL=document.getElementById(“txtDOL”).value;
var diff=(新日期(AsOfDate)-新日期(DOL))/(1000*60*60*24);
//我的lblDaysDown标签中没有填充结果。
//在控制台中,我得到一个错误“无法读取null的属性'value'”
document.getElementById(“”).innerHTML=(diff+1);
返回false;
}

如果ASP端的一切都正常,并且您获得了正确的ID,那么这应该是可行的

<script language="javascript" type="text/javascript">
    function getTotalDaysDown() {
       //Here is the part that I have problem. I can't get the values from label and textbox. 

       var AsOfDate = new Date(document.getElementById("<%=lblAsOfDate.ClientID %>").innerHTML); //Value should be 04/15/2018 according to your image
       var DOL = new Date(document.getElementById("<%=txtDOL.ClientID %>").value); //Value should be 11/01/2017 according to your image
       var diff = (AsOfDate - DOL) / (1000 * 60 * 60 * 24);

       document.getElementById('<%=lblDaysDown.ClientID %>').innerHTML = (diff + 1);
       return false;
    }
</script>

函数getTotalDaysDown(){
//这是我遇到问题的部分。我无法从标签和文本框中获取值。
var AsOfDate=new Date(document.getElementById(“”.innerHTML);//根据您的图像,该值应为2018年4月15日
var DOL=new Date(document.getElementById(“”.value);//根据您的图像,值应该是2017年1月11日
var diff=(AsOfDate-DOL)/(1000*60*60*24);
document.getElementById(“”).innerHTML=(diff+1);
返回false;
}

如果在所有控件上使用
ClientIDMode=“Static”
(或在
web.config
中将其永久设置),则不必使用嵌入式代码块。您只需使用
document.getElementById(“lblAsOfDate”)
。有很多“日期差异”的问题,所以,确保你搜索。我还没有检查JS;什么不起作用?@wazz我无法从脚本中的文本框和标签中检索该值。如果我将固定日期传递到脚本本身的变量中,用于计算差异的计算部分工作正常。但是当我试图检索值时,它却没有。在
AsOfDate
DOL
中得到了什么<代码>未定义?元素?错误?@egvaldes我的标签中没有填充任何内容。我的标签将保留在JS代码中,当您定义
AsOfDate
DOL
时,您已经获得了值,这意味着这些变量将是字符串,然后当您进行计算时,您将再次获得value属性,该属性将未定义,您必须在声明或计算中去掉
.value
。当您执行
新建日期(AsOfDate.value)
时,应该会出现无效的日期错误155@user2116846AsOfDate和DOL VAR中存储了什么?这些应该是日期对象,它们是日期。看我包括的那张照片。您可以使用提供的链接找到它。就在txtDOL中,我使用的是ajaxtoolkitcontrol日期掩码。我已将其包含在上述html部分的代码中。@user2116846如果执行
document.getElementById(“”.value
操作时得到一个带日期的字符串,则无所谓。我建议您使用调试器并逐步执行函数。
<script language="javascript" type="text/javascript">
    function getTotalDaysDown() {
       //Here is the part that I have problem. I can't get the values from label and textbox. 

       var AsOfDate = new Date(document.getElementById("<%=lblAsOfDate.ClientID %>").innerHTML); //Value should be 04/15/2018 according to your image
       var DOL = new Date(document.getElementById("<%=txtDOL.ClientID %>").value); //Value should be 11/01/2017 according to your image
       var diff = (AsOfDate - DOL) / (1000 * 60 * 60 * 24);

       document.getElementById('<%=lblDaysDown.ClientID %>').innerHTML = (diff + 1);
       return false;
    }
</script>