数组并显示为未定义
Arrays and showing as undefined
我的项目是根据学生人数和分数制作班级报告。在我的项目中,我需要显示学生的姓名和分数、平均成绩以及班级中最低和最高成绩。在我的代码中,当我到达发布班级报告的部分时,最后一个学生的姓名和分数被读取为未定义和未定义。然后它会影响我的平均值,该平均值被读取为 NaN 和最低和最高标记。如果有人可以修复我的代码,那就太好了!对我做错了什么的解释也非常感谢。
<script type="text/javascript">
var Names = [];
var Marks = [];
var sum = 0;
var average = 0;
var lowest = 99999999;
var lowestStudent;
var highest = -10000000;
var highestStudent;
$("#btnBoxes").click(function(){
$("#divOutput1").hide();
var number = GetInteger("txtNumber");
if (number >= 1){
GenerateTextandButton(number);
$("#btnReport").click(function(){
$("#divOutput2").hide();
InputintoArrays(number);
CalculateAverage();
ChecklowestMark();
CheckhighestMark();
Report();
});
}else{
$("#divOutput2").html("Please insert a number greater than 1.");
}
});
function GetInteger(num){
var number = parseInt($("#"+ num).val());
if(isNaN(number) === true){
return 0;
}else{
return number;
}
};
function GenerateTextandButton(x){
for(y=1;y<=x;y++){
$("#divOutput2").append("Student " + y + "<br><input type='text' id='txtName" + y + "' value='Insert Name'><br><input type='text' id='txtMark" + y + "' value='Insert Mark'><br><br>");
}
$("#divOutput2").append("<br><input type='button' id='btnReport' value='Generate'>");
};
function InputintoArrays(x){
for(y=1;y<x;y++)
Names[y]=$("#txtName" + y).val();
Marks[y]=parseInt($("#txtMark" + y).val());
}
};
function CalculateAverage(){
for(y=1;y<=Marks.length;y++){
sum = sum + Marks[y];
}
average = sum / Marks.length;
};
function ChecklowestMark(){
for(y=1;y<=Marks.length;y++){
if(Marks[y] <= lowest){
lowest = Marks[y];
lowestStudent = Names[y];
}
}
};
function CheckhighestMark(){
for(i=1;i<=Marks.length;i++){
if(Marks[i] >= highest){
highest = Marks[i];
highestStudent = Names[i];
}
}
};
function Report(){
$("#divOutput3").html("<b>Marks:</b> <br><br>");
for(y=1;y<=Marks.length;y++){
$("#divOutput3").append("<i>" + Names[y] + '</i>: ' + Marks[y] + "<br>");
}
$("#divOutput3").append("<br><u>Average Mark:</u> " + average.toFixed("2"));
$("#divOutput3").append("<br><u>Lowest Mark:</u> <i>" + lowestStudent + "</i> " + lowest);
$("#divOutput3").append("<br><u>Highest Mark:</u> <i>" + highestStudent + "</i> " + highest);
};
循环通常编写如下:
for (y = 1; y <= Marks.length; y++) { ... }
这没关系,但大多数程序员会这样做:
for (y = 0; y < Marks.length; y++) { ... }
这意味着您正在访问名称[1],名称[2]和名称[3](而不是名称[0],名称[1]和名称[2]
,这些名称通常是正确的)。现在,请注意在您的函数中
function InputintoArrays(x){
for(y=1;y<x;y++) {
Names[y]=$("#txtName" + y).val();
Marks[y]=parseInt($("#txtMark" + y).val());
}
};
您的控件显示 for(y=1;y<x;y++)
而不是 for(y=1;y<=x;y++)
,因此您没有插入最终名称。将y<x
更改为y<=x
,一切都应该没问题。或者更好的是,从 0 开始所有控制循环并使用 <
而不是 <=
进行测试。
为此更改方法"InputintoArrays"
函数 InputintoArrays(x){
for(y=1;y<=x;y++){
Names[y]=$("#txtName" + y).val();
Marks[y]=parseInt($("#txtMark" + y).val());
}
};
唯一的变化是 y<=x。
相关文章:
- 敲除jsobservable显示未定义的值
- 得到"未定义不是函数“;使用显示原型图案时出错
- Highcharts工具提示不显示corrosconding文本值,而是显示'未定义'
- 使用eval()定义变量显示未定义的错误
- Meteor js-控制台显示'未定义'即使返回结果
- wysihtml5命令显示为未定义
- Json显示来自网站的数据显示仅未定义
- 为什么“;未定义的“;以棱角分明的js显示
- 打字稿显示不能设置未定义的属性,如何解决
- 对象的属性显示为未定义
- JS方法显示了未定义的简单示例
- 当使用多个false时,Select2显示未定义
- AngularJS ng repeat显示原型函数未定义
- 函数在控制台中显示“未定义”
- HTML 对象在使用 ContentPlaceHolder 时在 Javascript 中显示为未定义
- 当我编写脚本时,它显示引用错误:未定义宽度
- 对象属性在控制台.log中显示为未定义
- 当我编写脚本时,它显示类型错误:menuLi[i] 未定义
- 未定义显示在选项中
- 引用错误:未定义显示