kHuynh
kHuynh

Reputation: 17

JavaScript is not working

My coding for JavaScript is not working and I can't figure out why. Can someone look it over and tell me what I am overlooking?

This is for my JavaScript assignment the link below is the assignment. Every time I have attempted to run the coding, it opens up to a blank page. But I can't see where my error(s) are. All I need is for someone to quickly read it and tell me what I can do to make it function.

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>

Upvotes: 0

Views: 221

Answers (3)

Manny
Manny

Reputation: 6287

class is a javascript reserved word, rename all class to something else. E.g. myClass

Renaming class should make your code work, but I still see many minimal errors in your code like unclosed <head> tag, use of uninitialized variable, etc. Suggest you review it thoroughly.

Upvotes: 2

Phil Ross
Phil Ross

Reputation: 26120

I ran your code in Firefox with the Firebug extension installed. It reported the following error.

class[classCtr] is undefined on Line 34

Line 34 is the following:

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

This error is occurring because you increment classCtr on the previous line, so the call to class[classCtr] attempts to access something that hasn't yet been defined.

Also, classCtr isn't assigned an initial value, so will have the value unassigned. The first set of values will therefore be stored in classCtr[undefined].

You'll need to initialize classCtr when it is declared and then increment it after you've finished handling each class.

Upvotes: 2

cjk
cjk

Reputation: 46475

classnm is never set to anything other than 0...

Upvotes: 2

Related Questions