该代码旨在使用javascript和表生成日历。几个月和几天是荷兰语,但这应该是可以理解的。不知何故,这会以无限循环结束,而当天数大于或等于我的数组长度时,它应该停止。
它应该每个月制作12个表格,然后用当月的日期填写这些表格。它还没有完成,因为它会假设每天都会在星期天开始。我想我也应该注意到,我还没那么有经验。
var months = new Array();
months[0] = "januari";
months[1] = "februari";
months[2] = "maart";
months[3] = "april";
months[4] = "mei";
months[5] = "juni";
months[6] = "juli";
months[7] = "augustus";
months[8] = "september";
months[9] = "oktober";
months[10] = "november";
months[11] = "december";
var maxDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
var weekDays = ["zo", "ma", "di", "wo", "do", "vr", "za"];
var kalender = 0;
var days = 1;
var weekDaysNumber = 0;
while(kalender < months.length){
document.write("<table><tr>");
document.write("<th>" + months[kalender] + "</th></tr>");
document.write("<tr>");
while (weekDaysNumber < 7){
document.write("<td>" + weekDays + "</td>";
weekDaysNumber++;
}
document.write("</tr>");
while(days < maxDays[kalender]){
document.write("<td>" + days + "</td>");
var rows = 0;
if(rows == 7 && days !== maxDays[kalender]){
document.write("</tr>");
document.write("<tr>");
rows = 1;
}
rows++;
days++;
}
if(days == maxDays[kalender]){
document.write("</tr></table>");
kalender++;
weekDaysNumber=0;
}
}
答案 0 :(得分:2)
因为您从未将days
变量重置为1
,所以在第二个外循环中,它永远不会等于maxDays[kalendar]
。可能存在其他问题,代码看起来比必要复杂得多,但这是无限循环的明显原因:当days
到达31
时,你打破了第一个循环,从第二个开始,由于31
大于28
,因此永远不会输入内循环,并且永远不会输入== maxDays[kalendar]
。
您的浏览器内置了功能齐全的调试器。您可以使用它来设置断点,单步执行代码,检查变量等。
答案 1 :(得分:0)
您需要在days
循环内将while(kalender < months.length){
重置为1。