未捕获的TypeError:undefined不是函数

时间:2014-10-17 15:40:28

标签: javascript google-chrome

我试图找到整个月中2个日期之间的区别,我在Stack Exchange上找到了一个小脚本,但它一直给我一个错误“Uncaught TypeError:undefined is not a function”。

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

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

(为了清晰起见,略微简化版本)

<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>

1 个答案:

答案 0 :(得分:1)

您的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 methods

<强>文档