2016-07-02 28 views
0

Ich schrieb diesen Code in meiner HTML-Site, in Javascript, aber funktioniert nicht richtig. Meistens scheint es einige Einträge zu ignorieren und wählt nur zufällig aus, welcher der Min/Max-Wert ist. Auch wenn ich versuchte, Durchschnittswerte zu berechnen, bekam ich eine Zeichenfolge anstelle einer Zahl, obwohl die Variable am Anfang als 0 deklariert wurde. z. B. 0 + 1 + 1 + 2 + 3 + 5 = 011235 statt 12. Hier ist der Code, danke im Voraus.Javascript: Berechnung Min/Max/Durchschnitt

** BEARBEITEN: Ich fügte den Student-Durchschnitt Code am Ende, aber es funktioniert nicht, es zeigt keine Ergebnisse auf der Seite, nicht einmal die "Student" + [i] Teil. Auf der anderen Seite arbeitete die parseInt() Befehl und machte alles funktioniert, wie es sollte, danke :)

<script language = "javascript"> 
function myFunction() { 
var course0 = []; 
var course1 = []; 
var course2 = []; 

var minstugrade = 100; 
var maxstugrade = 0; 
var minstugradetext = ""; 
var maxstugradetext = ""; 

var stuavgarr = []; 
var minstuavg = 100; 
var maxstuavg = 0; 
var minstuavgtext = ""; 
var maxstuavgtext = ""; 

var mincougrade = 100; 
var maxcougrade = 0; 
var mincougradetext = ""; 
var maxcougradetext = ""; 

var mincouavg = 100; 
var maxcouavg = 0; 
var mincouavgtext = ""; 
var maxcouavgtext = ""; 
var couavg = 0; 

//add form items to array 
var x = document.getElementById("course0"); 
var i; 
    for (i = 0; i < x.length ;i++) { 
     course0.push(parseInt(x.elements[i].value)); 
    } 
var x = document.getElementById("course1"); 
var i; 
    for (i = 0; i < x.length ;i++) { 
     course1.push(parseInt(x.elements[i].value)); 
    } 
var x = document.getElementById("course2"); 
var i; 
    for (i = 0; i < x.length ;i++) { 
     course2.push(parseInt(x.elements[i].value)); 
    } 

    //calculate course & student min/max 
    for (i = 0; i < course0.length; i++) { 
    if (course0[i] < mincougrade) { 
    mincougrade = course0[i]; 
    mincougradetext = "course0"; 
    } 
    if (course0[i] > maxcougrade) { 
    maxcougrade = course0[i]; 
    maxcougradetext = "course0"; 
    } 
    if (course0[i] < minstugrade) { 
    minstugrade = course0[i]; 
    minstugradetext = "student" + [i]; 
    } 
    if (course0[i] > maxstugrade) { 
    maxstugrade = course0[i]; 
    maxstugradetext = "student" + [i]; 
    } 
    } 

    for (i = 0; i < course1.length; i++) { 
    if (course1[i] < mincougrade) { 
    mincougrade = course1[i]; 
    mincougradetext = "course1"; 
    } 
    if (course1[i] > maxcougrade) { 
    maxcougrade = course1[i]; 
    maxcougradetext = "course1"; 
    } 
    if (course1[i] < minstugrade) { 
    minstugrade = course1[i]; 
    minstugradetext = "student" + [i]; 
    } 
    if (course1[i] > maxstugrade) { 
    maxstugrade = course1[i]; 
    maxstugradetext = "student" + [i]; 
    } 
    } 

    for (i = 0; i < course2.length; i++) { 
    if (course2[i] < mincougrade) { 
    mincougrade = course2[i]; 
    mincougradetext = "course2"; 
    } 
    if (course2[i] > maxcougrade) { 
    maxcougrade = course2[i]; 
    maxcougradetext = "course2"; 
    } 
    if (course2[i] < minstugrade) { 
    minstugrade = course2[i]; 
    minstugradetext = "student" + [i]; 
    } 
    if (course2[i] > maxstugrade) { 
    maxstugrade = course2[i]; 
    maxstugradetext = "student" + [i]; 
    } 
    }  

    //calculate course average 
    for (i = 0; i < course0.length; i++) { 
    couavg += course0[i]; 
    } 
    couavg = couavg/course0.length 
    if (couavg < mincouavg) { 
    mincouavg = couavg; 
    mincouavgtext = "course0"; 
    } 
    if (couavg > maxcouavg) { 
    maxcouavg = couavg; 
    maxcouavgtext = "course0"; 
    } 

    couavg = 0; 
    for (i = 0; i < course1.length; i++) { 
    couavg += course1[i]; 
    } 
    couavg = couavg/course1.length 
    if (couavg < mincouavg) { 
    mincouavg = couavg; 
    mincouavgtext = "course1"; 
    } 
    if (couavg > maxcouavg) { 
    maxcouavg = couavg; 
    maxcouavgtext = "course1"; 
    } 

    couavg = 0; 
    for (i = 0; i < course2.length; i++) { 
    couavg += course2[i]; 
    } 
    couavg = couavg/course2.length 
    if (couavg < mincouavg) { 
    mincouavg = couavg; 
    mincouavgtext = "course2"; 
    } 
    if (couavg > maxcouavg) { 
    maxcouavg = couavg; 
    maxcouavgtext = "course2"; 
    } 

    //calculate student average 
    for (i = 0; i < course0.length; i++) { 
    stuavgarr[i] += course0[i]; 
    stuavgarr[i] += course1[i]; 
    stuavgarr[i] += course2[i]; 
    } 

    for (i=0; i < stuavgarr.length; i++) { 
    stuavgarr[i] = stuavgarr[i]/course0.length; 
    if (stuavgarr[i] < minstuavg) { 
    minstuavg = stuavgarr[i]; 
    minstuavgtext = "student" + [i]; 
    } 
    if (stuavgarr[i] > maxstuavg) { 
    maxstuavg = stuavgarr[i]; 
    maxstuavgtext = "student" + [i]; 
    } 
    } 


    document.getElementById("studmaxgrade").innerHTML = "Student that achieved the max grade is " + maxstugradetext 
    document.getElementById("studmingrade").innerHTML = "Student that achieved the min grade is " + minstugradetext 
    document.getElementById("studmaxavg").innerHTML = "Student that achieved the max average is " + maxstuavgtext 
    document.getElementById("studminavg").innerHTML = "Student that achieved the min average is " + minstuavgtext 
    document.getElementById("courmaxgrade").innerHTML = "The course in which the max grade is scored is " + maxcougradetext 
    document.getElementById("courmingrade").innerHTML = "The course in which the min grade is scored is " + mincougradetext 
    document.getElementById("courmaxavg").innerHTML = "The course in which the max average grade is scored is " + maxcouavgtext 
    document.getElementById("courminavg").innerHTML = "The course in which the min average grade is scored is " + mincouavgtext 

    } 
</script> 
+0

Verwenden 'parseFloat' zu werfen Strings in Zahlen verwendet. – GuyT

+1

Der Wert eines Inputs gibt ** immer ** einen String. Auch wenn die Variable als Nummer definiert ist, weisen Sie sie nun String ... zu. –

Antwort

1

Der Wert eines Eingangs ist ein String, also a + b als Anfügen eines interpretiert werden String zu einem anderen.

Wenn Sie sicherstellen, dass der erste Parameter (a in diesem Fall) eine ganze Zahl a + b in den beiden mathematisch zu sein führt die Addition der beiden

console.log('0' + 1 + 2 + 3 + 4);    //* outputs
console.log(parseInt(0) + 1 + 2 + 3 + 4); //* outputs 10 

JSFiddle

0

Ok für einen Start Sie sehr verwirrt scheinen über document.getElementById

Dies ist kein Javascript Variable Adresse an alle ......

Dies bedeutet wörtlich "erhält das Dokumentelement durch seine ID". Hier ist ein Beispiel dafür, wie es zu benutzen ...

<html> 
<img id='my_new_selfie' src='me.jpg'> 
.... 
.... 
<script> 
alert (document.getElementById('my_new_selfie').src) 
</script> 

Dies würde einfach eine Benachrichtigung mit dem Text Pop-up, das die src des Dokument-Objekts beschreibt die ID ist, ist ‚my_new_selfie‘ , das ist .. ..

[me.txt]

Der Grund, dass document.getElementById Javascript eingeführt wurde, war die Entwickler das Erlernen der DOM (Document Object Model) zu speichern, um Objekte zuzugreifen. Es ermöglicht Ihnen, einfach, um Ihnen eine Objekt-ID und Dinge über sie ändern die ID

Im obigen Beispiel ich mit einem Skript oder Taste verwenden, könnte die Bildquelle ein Beispiel dafür ändern könnte das Onclick-Ereignis verwenden ein anderes Objekts auf der Seite wie ein Knopf ...

onclick='document.getElementById('my_new_selfie').src='new_pic_of_me.JPG' 

Es ist nicht zu identifizieren Variablen in einer Javascript

+0

Ich habe document.getElementById verwendet, um ein Formular und keine Variable abzufangen. Sie können das Formular hier nicht sehen, da es im allgemeinen HTML kodiert ist, nicht im Javascript Teil. – SpK