计算最小/最大/平均值

Javascript: Calculating Min/Max/Average

本文关键字:最大 平均值 计算      更新时间:2023-09-26

我在我的html网站上写了这个代码,在Javascript中,但不能正常工作。大多数时候,它似乎忽略了一些条目,只是随机选择最小/最大值。此外,当我试图计算平均值时,我得到一个字符串而不是一个数字,即使变量在开始时被声明为0。例如,执行0+1+1+2+3+5 = 011235而不是12。这里是代码,提前感谢。

**编辑:我在最后添加了学生平均代码,但它不起作用,它没有在页面上显示任何结果,甚至没有"学生"+ [I]部分。另一方面,parseInt()命令工作了,并使一切正常工作,谢谢:)

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

输入的值是一个字符串,因此a + b将被解释为将一个字符串附加到另一个字符串。

如果您确保第一个参数(在本例中为a)是一个整数,则a + b将导致两者在数学上相加

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

JSFiddle

一开始你似乎很困惑. getelementbyid

这根本不涉及javascript变量......

字面意思是"通过其id获取文档元素"。下面是如何使用它的一个例子…

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

这将简单地弹出一个警告,其中包含描述src的文本id为my_new_selfie的文档对象这是…

[me.txt]

该文档的原因。getElementById被引入javascript是为了让开发人员不用学习DOM(文档对象模型)来访问对象。它允许你给你的对象一个id并使用id

来改变它

在上面的例子中,我可以使用脚本或按钮来更改图像源这方面的一个例子可能是使用页面上另一个对象的onclick事件,如按钮…

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

不用于识别javascript中的变量