未捕获的类型错误:undefined不是函数

Uncaught TypeError: undefined is not a function

本文关键字:undefined 函数 错误 类型      更新时间:2023-09-26

我正试图找出整整一个月内两个日期之间的差异,我在Stack Exchange上找到了一个小脚本,但它一直给我一个错误"Unaught TypeError:undefined不是函数"。

我在chrome中得到了这个,它是一个相当简单的HTML页面。

它似乎不喜欢函数的第一行(var monthsLeft=to.getMonth()等)

(为清晰起见,略有简化:)

<script>
function monthDiff(from, to) {
    var monthsLeft = to.getMonth() - from.getMonth() + (12 * (to.getFullYear() - from.getFullYear()));
    if(to.getDate() < from.getDate()) {
        monthsLeft--;
    }
    return monthsLeft;
  }

function lumpChange() {
        var today = new Date();
        var april5th = new Date();
        var MonthsLeft = 0;
        today = '10/05/2015';
        april5th = '04/05/2015';
        MonthsLeft = monthDiff(today, april5th);  
  }
</script>

您的monthDiff()函数看起来似乎希望Date对象作为参数传递(它使用.getMonth()等方法)。你在传递字符串。

您不能通过将字符串分配给对象最初所在的变量来修改Date对象。

您可以在实例化Date时定义它:

function lumpChange(){
    var today = new Date(2015, 10, 05),
        april5th = new Date(2015, 04, 05);
    MonthsLeft = monthDiff(today, april5th); // -6
}

JSFiddle

如果在实例化Date对象后需要设置它的日期/时间,可以使用setter方法。

文档:

  • Date对象