Javascript все еще не работает - PullRequest
0 голосов
/ 13 июля 2010

Я до сих пор не могу запустить кодирование.Когда я пытаюсь запустить кодирование, появляется пустая страница.В частности, что мне нужно сделать, чтобы это простое кодирование заработало?Все, что мне нужно, это кто-то, чтобы просмотреть это или проверить это и сказать мне, что мне нужно, чтобы мой код заработал.

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

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

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


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

    // add one to the total number 
    classCtr++;
    gpatotalvalue = gpatotalvalue + parseFloat(myClass[classCtr][1]);
    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 == 0 && classnm == 0)
  {
     document.write("<tr>");
     document.write("<td>");
     document.write (class[clsGrade][0]);
     document.write("</td>");
     document.write("<td align='center'>");
     document.write (class[clsGrade][1]);
     document.write("</td>");
     document.write("<td align='center'>");
     document.write (class[clsGrade][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>

Ответы [ 2 ]

1 голос
/ 13 июля 2010

Вот рабочая версия, хотя я не уверен, что расчет GPA верный, в Новой Зеландии нет GPA, поэтому не уверен, как его рассчитатьЯ добавил несколько комментариев к коду, где указано, где вы ошиблись:)

<html>
<body>
<script language="JavaScript">
<!--
var classCtr = 0; // should be initialised to 0 so it can be incremented
var nmAnswer;
var clsGrade;
var totalvalue;
var gpatotalvalue = 0;
var totalvalue = 0;
// set up one dimensional array
var myClass = new Array();

//removed some unused variables

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

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


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

    gpatotalvalue = gpatotalvalue + parseFloat(myClass[classCtr][2][ myClass[classCtr][1] ] ); //moved this line above the classCtr++; line so you weren't accessing an undefined variable, there some changes here to access the myClass[classCtr][2] object value correctly..

    // add one to the total number 
    classCtr++;

    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 (myClass[clsGrade]) //the previous conditional would only out put the first "persons" grades so changed this to loop through until all peoples grades
  {
     document.write("<tr>");
     document.write("<td>");
     document.write (myClass[clsGrade][0]); //had class instead of myClass
     document.write("</td>");
     document.write("<td align='center'>");
     document.write (myClass[clsGrade][1]);//had class instead of myClass
     document.write("</td>");
     document.write("<td align='center'>");
     document.write (myClass[clsGrade][3]);//had class instead of myClass
     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 голосов
/ 13 июля 2010

В этой строке вы использовали class вместо myClass:

myClass[classCtr][2] = {"A":4,"B":3,"C":2,"D":1,"F":0}[myClass[classCtr][1]];

В этих строках вы сначала увеличивали classCtr, что означало, что вы получаете неопределенное значение при доступе кэлемент за концом массива:

gpatotalvalue = gpatotalvalue + parseFloat(myClass[classCtr][1]);
classCtr++;
...