在javascript中未定义类型错误

时间:2013-05-09 21:10:47

标签: javascript typeerror

我刚刚学习了JavaScript,这是我的脚本:

var now = new Date();
var date = now.getDate();
var month = now.getMonth();
var Holidays = [
    [8, 3],
    [9, 8],
    [10, 16],
    [11, 7],
    [11, 24],
    [11, 25],
    [11, 26],
    [11, 27],
    [11, 28],
    [11, 29],
    [11, 30],
    [11, 31],
    [0, 1],
    [0, 2],
    [0, 3],
    [0, 4],
    [0, 31],
    [1, 15],
    [1, 18],
    [2, 11],
    [2, 12],
    [2, 13],
    [2, 14],
    [2, 15],
    [2, 29],
    [3, 1],
    [4, 20],
    [5, 26],
    [5, 27],
    [5, 28]
];
var i = 0;
while (i <= Holidays.length) {
    if (check() === true) {
        console.log("No school today.");
        i = 32;
    } else if (check() === false) {
        if (i < Holidays.length) {
            i++;
        } else {
            console.log("we work today.");
            i++;
        }
    }
}

function check() {
    if (month == Holidays[i][0] && date == Holidays[i][1]) {
        return true;
    } else {
        return false;
    }
}

目的是打印出来&#34;今天没有学校&#34;对于假日数组中的日子,否则,它会打印出来&#34;我们今天工作&#34;。 每当我运行脚本时,它总是说

  

类型错误Holidays [i] undefined

有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:1)

代码中至少有一个问题

while (i <= Holidays.length) {

最后我应该是Holidays.length-1,所以请使用:

while (i < Holidays.length) {

答案 1 :(得分:1)

代码最后一次执行i++时,i将以假日+ 1的最后一个索引结束。

因此,在抛出错误的行中,您正在尝试检索不在数组中的项目。您没有尝试获取数组的特定元素,并且违规代码不在循环中,因此您可能需要检查它。