2010-07-12 9 views
0

Je n'arrive toujours pas à faire fonctionner mon code. Lorsque j'essaie d'exécuter le codage, une page blanche s'affiche. Plus précisément, que dois-je faire pour que ce codage simple fonctionne? Tout ce dont j'ai besoin, c'est d'une personne pour regarder par-dessus ou tester et me dire ce dont j'ai besoin pour que mon codage fonctionne.Javascript ne fonctionne toujours pas

<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

Comme vous le savez déjà, JavaScript est très finicky - un petit bo-bo effacera facilement toute votre page. –

+2

Avez-vous essayé de regarder la console JavaScript dans votre navigateur? Il vous donnera une erreur spécifique s'il essaie d'exécuter votre code et échoue. –

+0

En tant que programmeur, vous devez être conscient de l'aide au débogage. Les boîtes d'alerte le long du chemin peuvent vous dire approximativement où il a cessé de fonctionner. Et aussi, IE a un débogueur javascript intégré, il vous dira quelle ligne et pourquoi il s'est arrêté. –

Répondre

0

Dans cette ligne que vous avez utilisé class au lieu de myClass:

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

Dans ces lignes, vous AUGMENTAIENT première classCtr, ce qui signifie que vous obtenez une valeur indéfinie que vous accédez à un élément au-delà de la fin du tableau:

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

Comme indiqué dans [une réponse] (http://stackoverflow.com/questions/3227740/javascript-is-not-working#3227788) à la version antérieure de cette question, 'classCtr' n'est pas réellement initialisé. En plus de changer l'ordre de ces lignes, 'classCtr' doit avoir une valeur initiale avant d'être utilisé pour la première fois. –

1

Heres une version de travail, même si je ne suis pas sûr si le calcul GPA est correcte, n'ont pas s i GPA n Nouvelle-Zélande, donc je ne sais pas comment c'est calculé. J'ai ajouté quelques commentaires au code, il indique où vous vous étiez trompé :)

<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

Oh mon Dieu, je pourrais vous étreindre! MERCI MERCI MERCI! C'est tellement gentil de votre part, vous ne comprenez pas à quel point j'apprécie profondément cela! Cela fonctionne et avec vos commentaires je comprends pourquoi. Tu es incroyable! Merci beaucoup! – kHuynh

+1

Bien que mettre l'ensemble des catégories dans chaque élément n'a aucun sens du tout. Vous avez supprimé le code qui détecte une seule note de la matrice. – Guffa

+0

Ahh ouais vrai, ouais je ne voulais pas passer trop de temps avec le code, c'est plutôt joli. – Okeydoke

Questions connexes