2013-05-09 6 views
0

Я только что узнал о JavaScript, и вот мой сценарий:Тип не определен в 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; 
    } 
} 

Цель состоит в том, чтобы сделать его не печатать «Нет школы сегодня» за дни в массиве праздник, в противном случае, это 'd print out "мы работаем сегодня". Всякий раз, когда я бегу сценарий он всегда говорит

тип ошибки праздники [я] не определено

Может кто-нибудь помочь мне с этим?

ответ

1

По крайней мере одна проблема в коде

while (i <= Holidays.length) { 

последний я должен быть Holidays.length-1, так что используйте:

while (i < Holidays.length) { 
+0

Спасибо, но я только хочу, чтобы он печатал «мы работаем сегодня» только один раз после того, как все было проверено. Вы можете мне помочь? – user2364737

+0

после console.log («мы работаем сегодня»); добавьте одну строку: break; – Gisway

+0

большое спасибо Giswin! – user2364737

1

Последний раз код делает i++, i будет в конечном итоге со значением, которое является последним индексом праздников + 1.

Итак, в строке, которая выдает ошибку, вы пытаетесь получить элемент, который не находится в массиве. Вы не пытаетесь получить определенный элемент массива, а код нарушения не находится в цикле, поэтому вы можете проверить это.