2010-07-12 2 views
0

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

<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> 
+0

Как вы уже знаете, JavaScript очень тонкий - один небольшой bo-bo будет легко удалять всю вашу страницу. –

+2

Вы пробовали посмотреть консоль JavaScript в своем браузере? Это даст вам конкретную ошибку, если она попытается выполнить ваш код и не удастся. –

+0

Как программист, вы должны знать об отладочной помощи. Предупреждающие коробки по пути могут рассказать вам, где он перестает работать. Кроме того, IE имеет встроенный отладчик javascript, он расскажет вам, какая строка и почему она остановилась. –

ответ

0

В этой строке вы использовали 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++; 
+0

Как указано в [ответе] (http://stackoverflow.com/questions/3227740/javascript-is-not-working#3227788) к более ранней версии этого вопроса, 'classCtr' на самом деле не инициализируется. В дополнение к изменению порядка этих строк 'classCtr' необходимо установить на начальное значение перед его первым использованием. –

1

Имеет рабочую версию, хотя я не уверен, что расчет GPA верен, у меня нет GPA i n Новая Зеландия так не уверена, как ее рассчитали. Я добавил несколько комментариев к коду, на котором он указывает, где вы поступили не так :)

<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

О, боже мой, я могу тебя обнять! СПАСИБО СПАСИБО СПАСИБО! Это так вам от вас нужно, вы не понимаете, насколько я глубоко ценю это! Он работает, и с вашими комментариями я понимаю, почему. Ты великолепен! Большое спасибо! – kHuynh

+1

Хотя поместить весь массив оценок в каждый элемент не имеет никакого смысла. Вы удалили код, который выделяет один класс из массива. – Guffa

+0

Ах, да, правда, да, я не хотел долго тратить на это код, его довольно корявый. – Okeydoke

Смежные вопросы