2013-10-13 90 views
0

該代碼旨在生成使用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

提示:http://stackoverflow.com/questions/802854/why-is-document-write-considered-a-bad-practice – elclanrs

回答

2

因爲你從來沒有days變量重置爲1,等第二外環,它永遠不會等於maxDays[kalendar]。有可能是其他問題,代碼看起來比必要更復雜,但這是無限循環的明顯原因:當days達到31,您打破第一個循環,開始第二個,並且因爲31大於28內部循環從不輸入,並且您的== maxDays[kalendar]從不輸入。


您的瀏覽器有內置的全功能的調試器。您可以使用它來設置斷點,單步執行代碼,檢查變量等。

0

您需要在while(kalender < months.length){循環內將days重置爲1。

相關問題