JavaScript |使用变量

时间:2017-04-15 17:43:08

标签: javascript date datepicker

我正在尝试基于月份变量添加月份到日期,但是当我尝试从输入字段获取月份并传递它时,我得到错误的结果。如果我自己定义一个变量并将其传递给setMonth,我会得到正确的结果。

这是代码:

当我使用静态值时:

.on('changeDate', function(e){

        var datea = new Date(e.date);
        console.log(datea);
        // var montha = $('#duration').val();
        // console.log(montha);
        montha = 3 ;
         datea.setMonth(datea.getMonth()+ montha);
         datea = datea.getDate() + "/" + datea.getMonth() + "/" + datea.getFullYear();

         console.log(datea);
         $('#end_date').val(datea);

    });

控制台输出:

Sat Apr 01 2017 00:00:00 GMT+0530 (India Standard Time)
1/6/2017

你可以看到它打印出正确的输出

但是如果我尝试从输入字段中提取月份值

.on('changeDate', function(e){

        var datea = new Date(e.date);
        console.log(datea);
        var montha = $('#duration').val();
        console.log(montha);

         datea.setMonth(datea.getMonth()+ montha);
         datea = datea.getDate() + "/" + datea.getMonth() + "/" + datea.getFullYear();

         console.log(datea);
         $('#end_date').val(datea);

    });

控制台输出:

Sat Apr 01 2017 00:00:00 GMT+0530 (India Standard Time)
3
1/9/2019

即使montha的值为3,输出结果也不正确。

请帮我解决这个问题

1 个答案:

答案 0 :(得分:2)

我在我的浏览器控制台中进行了检查,我认为问题可能是因为输入值没有转换为数字类型。从下图中,date1为setMonth函数添加3(数字类型),然后获取正确的日期“2017/7 / ...”。但是,date2将“3”(字符串类型)添加到setMonth函数,然后获取日期“2019/10 / ...”。

enter image description here