繁体   English   中英

Javascript:计算最小/最大/平均值

[英]Javascript: Calculating Min/Max/Average

我在Java站点的html站点中编写了此代码,但工作不正常。 大多数情况下,它似乎忽略了一些条目,只是随机选择最小/最大值。 另外,当我尝试计算平均值时,即使变量在开始时声明为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

首先,您似乎对document.getElementById感到非常困惑

这根本无法解决javascript变量......

这实际上是“通过其ID获取文档元素”。 这是一个使用方法的例子...

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

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

[me.txt]

将document.getElementById引入javascript的原因是为了节省开发人员学习DOM(文档对象模型)的权限,以便访问对象。 它允许您简单地给您一个对象id并使用该id对其进行更改

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

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

它不用于标识javascript中的变量

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM