如何修复“ .setFullYear不是函数”

时间:2019-06-16 18:11:50

标签: javascript

我收到错误未捕获的TypeError:尝试修改值时,thisDay.setFullYear不是函数。

我已经尝试在代码的各个阶段进行调试,并确认我能够从我的moveDate函数中访问thisDay变量,但它不允许我在其上使用任何日期函数。

我一直在与我战斗的代码位于 https://jsfiddle.net/ramseys1990/g9cp42bj/3/

主要问题的摘要是:

function moveDate(selection) {

    switch(selection) {
        case "prevYear":
            thisDay.setFullYear((thisDay.getFullYear() - 1).toInteger);
            putCalendar(thisDay.getMonth(), thisDay.getFullYear() - 1);
            break;
        case "prevMonth":
            thisDay.setMonth(thisDay.getMonth() - 1);
            //putCalendar(thisDay.getMonth() - 1, thisDay.getFullYear());
            break;
        case "nextMonth":
            thisDay.setMonth(thisDay.getMonth() + 1);
            //putCalendar(thisDay.getMonth() + 1, thisDay.getFullYear());
            break;
        case "nextYear":
            thisDay.setFullYear(thisDay.getFullYear() + 1);
            //putCalendar(thisDay.getMonth(), thisDay.getFullYear() + 1);
            break;
        case "today":
            thisDay = new Date();
            //putCalendar(thisDay.getMonth(), thisDay.getFullYear());
            break;
    }
    putCalendar(thisDay.getMonth(), thisDay.getFullYear());
    return;
}

我的putCalendar函数是:

function putCalendar(month, year) {


    // Set the date displayed in the calendar 

    thisDay.setMonth = month;
    thisDay.setFullYear = year;
    // Determine the current month
    //var thisMonth = thisDay.getMonth();
    // Determine the current year
    //var thisYear = thisDay.getFullYear();

    // write the calendar to the element with the id 'calendar'
    document.getElementById("demo").innerHTML = createCalendar(thisDay);
}

我的代码文件的顶部当前是:

"use strict";
var thisDay = new Date();
putCalendar(thisDay.getMonth(), thisDay.getFullYear());

我希望它会将修改后的日期传递给我的putCalendar函数,以重新创建不同年份或月份的日历。

1 个答案:

答案 0 :(得分:1)

问题是在这里

putCalendar(thisDay.getMonth(), thisDay.getFullYear());

调用 getFullYear,其返回值将传递给{strong>不是函数的putCalendar

然后year.setFullYear将获得此值,并且当您尝试调用它时,它将失败。