添加天数到目前为止未捕获的TypeError:getDate不是函数

时间:2018-05-25 16:48:54

标签: javascript

我从输入元素获取值并将其转换为日期格式mm / dd / yyyy然后我添加了一些日期,但我得到了未捕获的TypeError:dt_cl.getDate不是函数。

$('#dt_input').change(function() {
    var dep_dt = $(this).val();
    $('#eff_input').val(dep_dt);
    var eff_dt = new Date(dep_dt);
    var dt_cl = (eff_dt.getMonth() + 1) + '/' + eff_dt.getDate() + '/' +  eff_dt.getFullYear();
    var exp_dt = new Date().setDate(dt_cl.getDate()+364);
});

HTML

<input type="text" id="dt_input">
<input type="text" id="eff_input">

1 个答案:

答案 0 :(得分:2)

问题是dt_cl正在初始化为字符串:

var dt_cl = (eff_dt.getMonth() + 1) + '/' + eff_dt.getDate() + '/' +  eff_dt.getFullYear();

然后你在这里打电话给getDate()

var exp_dt = new Date().setDate(dt_cl.getDate()+364);

字符串没有getDate()方法。您需要根据字符串创建一个新日期,然后它才能生效。

仅供参考:您可能希望第一个字段为:<input type="date">以确保输入是有效的日期格式。

$('#dt_input').change(function() {
    var dep_dt = $(this).val();
    $('#eff_input').val(dep_dt);
    var eff_dt = new Date(dep_dt);
    // dt_cl is being set to a string here:
    var dt_cl = (eff_dt.getMonth() + 1) + '/' + eff_dt.getDate() + '/' +  eff_dt.getFullYear();
    
    // So, you need to take that string and make a new Date from it and then
    // you can call .getDate() on that new date.
    var exp_dt = new Date().setDate(new Date(dt_cl).getDate() + 364);
    
    // The result can be seen by making yet another date using the previous one
    console.log(new Date(exp_dt));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="date" id="dt_input">
<input type="text" id="eff_input">