Калькулятор оценок javascript с использованием массивов и уточнения функций
Я пытаюсь написать программу, которая будет отображать буквенную оценку, когда пользователь вводит действительное число или число с плавающей запятой. Оперативный вопрос работает, но функция не работает. Я попытался отладить код безуспешно.
Любая помощь приветствуется. Спасибо!
var nameData = ['A', 'B', 'C', 'D', 'E', 'F'];
var nameDataLength = nameData.length;
var avgGrade = 0;
var gradeDate = prompt('Enter your grade to check your letter grade');
function getAvg(nameData, gradeData) {
for (var i = 0; i < nameData.length; i++) {
alert("Your grades are " + nameData[i] + " ," + gradeData[i]);
if (gradeData[i] >= 90) {
alert("Your grades are " + nameData[i] + "A");
} else if (gradeData[i] >= 80) {
alert("Your grades are " + nameData[i] + "B");
} else if (gradeData[i] >= 70) {
alert("Your grades are " + nameData[i] + "C");
} else if (gradeData[i] >= 60) {
alert(" Your grades are " + nameData[i] + "D");
} else {
alert("Your grades are " + nameData[i] + "F");
}
}
}
3 ответа
Посмотрите на это:
<!DOCTYPE html>
<html>
<body>
<p>Click the button to demonstrate the prompt box.</p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
<script>
function myFunction() {
var gradeData = prompt('Enter your grade to check your letter grade');
var grade=getGrade(gradeData);
alert(grade);
}
function getGrade(gradeData) {
if (gradeData >= 90) {
return 'A';
}
if (gradeData >= 80) {
return 'B';
}
if (gradeData >= 70) {
return 'C';
}
if (gradeData >= 60) {
return 'D';
}
return 'F';
}
</script>
</body>
</html>
Другой способ изменить свой код следующим образом:
<!DOCTYPE html>
<html>
<body>
<p>Click the button to type in your Marks and get grades.</p>
<button onclick="gradeCalculator()">Click here</button>
<p id="demo"></p>
<script>
var nameData = ['A', 'B', 'C', 'D', 'F'];
function gradeCalculator() {
var gradeData = prompt('Enter your grade to check your letter grade');
getAvg(nameData,gradeData);
}
function getAvg(nameData, gradeData) {
if (gradeData>= 90) {
alert("Your grades are " + nameData[0]);
} else if (gradeData >= 80) {
alert("Your grades are " + nameData[1]);
} else if (gradeData >= 70) {
alert("Your grades are " + nameData[2]);
} else if (gradeData >= 60) {
alert(" Your grades are " + nameData[3]);
} else {
alert("Your grades are " + nameData[4]);
}
}
</script>
</body>
</html>
Вы можете рассмотреть возможность использования функции для получения оценки из заданного процента.
Эта функция имеет ранний возврат, потому что если значение найдено, функция может быть прервана без проверки других значений.
Этот шаблон мешает использовать продолжение if ... else if ... else if ...
шаблон, потому что только ложное условие продолжается с проверкой.
function getGrade(percent) {
if (percent >= 90) {
return 'A';
}
if (percent >= 80) {
return 'B';
}
if (percent >= 70) {
return 'C';
}
if (percent >= 60) {
return 'D';
}
return 'F';
}
console.log(getGrade(90)); // A
console.log(getGrade(81)); // B
console.log(getGrade(72)); // C
console.log(getGrade(63)); // D
console.log(getGrade(54)); // F
У вас есть несколько проблем:
- опечатка:
nameDate
->nameData
- ты никогда не вызываешь свою функцию
- ваша функция не делает то, что вы думаете, что она делает
Я решу первые два, чтобы вы могли видеть третий.
var nameData = ['A', 'B', 'C', 'D', 'E', 'F'];
var nameDataLength = nameData.length;
var avgGrade = 0;
function getAvg(gradeData) {
for (var i = 0; i < nameData.length; i++) {
alert("Your grades are " + nameData[i] + " ," + gradeData[i]);
if (gradeData[i] >= 90) {
alert("Your grades are " + nameData[i] + "A");
} else if (gradeData[i] >= 80) {
alert("Your grades are " + nameData[i] + "B");
} else if (gradeData[i] >= 70) {
alert("Your grades are " + nameData[i] + "C");
} else if (gradeData[i] >= 60) {
alert(" Your grades are " + nameData[i] + "D");
} else {
alert("Your grades are " + nameData[i] + "F");
}
}
}
var gradeData = prompt('Enter your grade to check your letter grade');
// you need to actually call the function.
getAvg(gradeData);