将数字字符串映射到返回 NaN 的整数
Mapping string of numbers to ints returning NaN
我有一个简单的程序,它可以获取用户的成绩并计算他们的加权成绩。我的函数接受一串成绩和 returns 一个整数数组,但一直返回 Nan
。这是我的功能:
function getUserScores(subject) {
var category;
switch (subject) {
case "test":
category = document.getElementById("testGrades").value;
category = category.split(',').map(function(item) {
return parseInt(item, 10);
});
case "quiz":
category = document.getElementById("quizGrades").value;
category = category.split(',').map(function(item){
return parseInt(item, 10);
});
case "homework":
category = document.getElementById("homeworkGrades").value;
category = category.split(',').map(function(item){
return parseInt(item, 10);
});
default:
return "Error: something went wrong with switch statement";
}
}
因此,如果我用 getUserScores("test")
调用它,它会获取 testGrades
值,即 "96, 92, 94"
和 returns NaN
而不是 [96, 92, 94]
?我在这里做错了什么?
您需要在每个案例中添加一个中断,以及 return 类别
function getUserScores(subject) {
var category;
switch (subject) {
case "test":
category = document.getElementById("testGrades").value;
category = category.split(',').map(function(item) {
return parseInt(item, 10);
});
break;
case "quiz":
category = document.getElementById("quizGrades").value;
category = category.split(',').map(function(item){
return parseInt(item, 10);
});
break;
case "homework":
category = document.getElementById("homeworkGrades").value;
category = category.split(',').map(function(item){
return parseInt(item, 10);
});
break;
default:
return "Error: something went wrong with switch statement";
}
return category;
}
此外,请确保您正在获取所需的值,选择器可以正确使用:
category = document.getElementById("testGrades").value;
// add a console.log to test it
console.log(category);
或者,完全删除 switch
语句:
function getUserScores(subject) {
var ele = document.getElementById(subject + "Grades");
if (ele === null) {
return null;
}
var category = ele.value;
category = category.split(',').map(function(item) {
return parseInt(item, 10);
});
return category;
}
为了确保当元素不存在时代码不会中断,我 return null
当 getElementById
找不到任何东西时。
我有一个简单的程序,它可以获取用户的成绩并计算他们的加权成绩。我的函数接受一串成绩和 returns 一个整数数组,但一直返回 Nan
。这是我的功能:
function getUserScores(subject) {
var category;
switch (subject) {
case "test":
category = document.getElementById("testGrades").value;
category = category.split(',').map(function(item) {
return parseInt(item, 10);
});
case "quiz":
category = document.getElementById("quizGrades").value;
category = category.split(',').map(function(item){
return parseInt(item, 10);
});
case "homework":
category = document.getElementById("homeworkGrades").value;
category = category.split(',').map(function(item){
return parseInt(item, 10);
});
default:
return "Error: something went wrong with switch statement";
}
}
因此,如果我用 getUserScores("test")
调用它,它会获取 testGrades
值,即 "96, 92, 94"
和 returns NaN
而不是 [96, 92, 94]
?我在这里做错了什么?
您需要在每个案例中添加一个中断,以及 return 类别
function getUserScores(subject) {
var category;
switch (subject) {
case "test":
category = document.getElementById("testGrades").value;
category = category.split(',').map(function(item) {
return parseInt(item, 10);
});
break;
case "quiz":
category = document.getElementById("quizGrades").value;
category = category.split(',').map(function(item){
return parseInt(item, 10);
});
break;
case "homework":
category = document.getElementById("homeworkGrades").value;
category = category.split(',').map(function(item){
return parseInt(item, 10);
});
break;
default:
return "Error: something went wrong with switch statement";
}
return category;
}
此外,请确保您正在获取所需的值,选择器可以正确使用:
category = document.getElementById("testGrades").value;
// add a console.log to test it
console.log(category);
或者,完全删除 switch
语句:
function getUserScores(subject) {
var ele = document.getElementById(subject + "Grades");
if (ele === null) {
return null;
}
var category = ele.value;
category = category.split(',').map(function(item) {
return parseInt(item, 10);
});
return category;
}
为了确保当元素不存在时代码不会中断,我 return null
当 getElementById
找不到任何东西时。