2010-07-12 102 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”标记,未初始化变量的使用等。建议你仔细阅读它。