2010-07-12 104 views
1

我對JavaScript的編碼不起作用,我找不出原因。有人可以看看它並告訴我我忽略了什麼嗎?JavaScript不起作用

這是爲我的JavaScript分配下面的鏈接是任務。每次我嘗試運行編碼時,都會打開一個空白頁面。但是我看不到我的錯誤在哪裏。我需要的只是讓別人快速閱讀並告訴我可以做些什麼來使其發揮作用。

https://docs.google.com/fileview?id=16uNNiooLalkm1QlszrqEPr2qqMGLjhrtQx7qCLw-7d2ftygre8GM6hyceJHj&hl=en

<html> 
<head> 
<body> 
<script language="JavaScript"> 
<!-- 
var classCtr; 
var nmAnswer; 
var clsGrade; 
var totalvalue; 
var gpatotalvalue; 
gpatotalvalue = 0; 
totalvalue = 0; 
// set up one dimensional array 
var class = new Array(); 
classnm = 0; 

do 
{ 
    // start columns in second dimension of the array 
    class[classCtr] = new Array(); 

// get values from user and put in array 
class[classCtr][0] = prompt ("Enter Class Name"); 
class[classCtr][1] = prompt ("Enter grade recieved"); 
class[classCtr][2] = {"A":4,"B":3,"C":2,"D":1,"F":0}[class[classCtr][1]]; 
class[classCtr][3] = prompt ("Enter credit hours") 


// accumulate the total value 
totalvalue = totalvalue + parseFloat(class[classCtr][3]); 

// add one to the total number of cars 
classCtr++; 
totalvalue = totalvalue + parseFloat(class[classCtr][2]); 
nmAnswer = prompt ("Do you have more classes"); 
} while (nmAnswer == "yes"); 

    // set variable that is used as counter 
clsGrade = 0; 

// print out header for content 
document.write("<H2 align='center'>Grade Point Average</H2><br>"); 
document.write("<table bgcolor='Grey' align='center' border='1' cellpadding='4' width='75%'>"); 
document.write("<tr>"); 
document.write("<td>Class Name</td><td align='center'>Class Grade</td><td align='center'>Grade Credit</td>"); 
document.write("</tr>"); 

// Loop through array displaying html and javascript values in the array 
while (clsGrade < classnm) 
    { 
    document.write("<tr>"); 
    document.write("<td>"); 
    document.write (class[classCtr][0]); 
    document.write("</td>"); 
    document.write("<td align='center'>"); 
    document.write (class[classCtr][1]); 
    document.write("</td>"); 
    document.write("<td align='center'>"); 
    document.write (class[classCtr][3]); 
    document.write("</td>"); 
    document.write("</tr>"); 

    document.write("</td>"); 


    // increment the counter 
    clsGrade++; 
    } 

// finish the table of data and display the total value 
document.write("</Table>"); 
document.write("<br>"); 
document.write("<table bgcolor='grey' align='center' border='1' cellpadding='4' width='75%'>"); 
document.write("<tr>"); 
document.write("<td>Total value</td><td align='center'>" + totalvalue + "</td>"); 
document.write("</tr>"); 
document.write("<tr>"); 
document.write("<td>GPA</td><td align='center'>" + gpatotalvalue + "</td>"); 
document.write("</tr>"); 
document.write("</Table>"); 


//--> 
</script> 
</font></body> 
</html> 
+0

當初始化class [classCtr]中的第二個數組時,有可能classCtr未被初始化爲任何東西導致錯誤? – Marcin 2010-07-12 15:38:16

回答

2

永遠不會設置爲0以外的任何東西......

+0

我確實將classnm設置爲0 ...? – kHuynh 2010-07-12 10:49:31

+0

是的,我認爲作者可能更改了代碼,將用戶值放入「class」數組中,並且從未更改舊邏輯。 – Andir 2010-07-12 10:52:27

+0

@kHuynh:是的,你將它設置爲0,但在此之後它永遠不會改變。 classGrade == 0和classNm == 0所以你的while循環永遠不會運行,因爲0不小於0. – Andir 2010-07-12 10:54:23

2

我安裝了Firebug擴展跑到你的代碼在Firefox。它報告了以下錯誤。 34

 
class[classCtr] is undefined on Line 34 

線如下:

totalvalue = totalvalue + parseFloat(class[classCtr][2]); 

這個錯誤發生,因爲您在上線增加classCtr,所以調用class[classCtr]試圖訪問還沒有被定義的東西。

另外,classCtr未分配初始值,因此將具有值unassigned。因此第一組值將被存儲在classCtr[undefined]中。

聲明時需要初始化classCtr,然後在完成每個類的處理後再增加它。

+1

還有另一個讓每個人都用螢火蟲開發的理由!我乍一看錯過了,但有一個問題。 – Andir 2010-07-12 11:03:47

+0

問題出現在那行之前:class [classCtr] = new Array();就像是說class [「undefined」] = new Array(); – Andir 2010-07-12 11:09:18

+0

你建議我應該用什麼來改變它的有效性? – kHuynh 2010-07-12 11:12:07

2

class是一個javascript保留字,將所有「class」重命名爲其他內容。例如。 「myClass」

重命名「類」應該能讓你的代碼正常工作,但是我仍然會在你的代碼中看到許多最小的錯誤,比如未封閉的「head」標記,未初始化變量的使用等。建議你仔細閱讀它。