Member 13455529 Ответов: 2

Создание калькулятора оценок, использование оценки и возможной оценки для расчета процента оценок и буквенной оценки, которая должна обновляться в реальном времени. Почему этот код не будет работать? Пожалуйста, помогите!


Приведенный ниже код - это то, что я использую.
Я должен отметить, что я новичок в JavaScript, и это в основном полностью выходит за рамки моей головы, потому что я не могу экстраполировать реальные примеры из учебников (никто никогда не будет использовать JavaScript, чтобы заставить страницу сказать "Привет, мир", жестко закодированную, когда HTML сделает это просто отлично).

Что я уже пробовал:

<!DOCTYPE html>

		<meta charset="utf-8">
		<title>Grade Calculator
		<meta name="viewport" content="width=device-width, initial-scale=1">
		
		
			<h1>SAIT Grade Calculator</h1>
		
			<h1> Grade Calculator </h1>
			
			
			<h2>Your Percentage Grade </h2>
				<p>Your percentage grade is: </p>
			
			<h2>Your Letter Grade </h2>
			<p>Your letter grade is: </p>
			
	
		function setGrades (){
		 var gradeobtained = parseFloat(document.getElementById('enumerator').value);
		var gradepossible = parseFloat(document.getElementById('denominator').value);

		
		
			var numbergrade = (gradeobtained / gradepossible)*100) ; document.getElementById('total').value = numbergrade;
	var percentscore = 
if (numbergrade>=101) {
	document.getElementById("percentgrade").innerHTML = "Sorry, it is not possible to have a grade over 100%"
}
else {
	document.getElementById("percentgrade").innerHTML = numbergrade.value
};

		
	
		var lettergrade = if(numbergrade >= 90){
			document.getElementById('letter').value = "A+";
		}
		
		else if(89 >= numbergrade && numbergrade >= 85){
			document.getElementById('letter').value = "A";
		}
		
		else if(84 >= numbergrade && numbergrade >= 80){
			document.getElementById('letter').value = "A-";
		}
		
		else if(79 >= numbergrade && numbergrade >= 76){
			document.getElementById('letter').value = "B+";
		}
		
		else if(75 >= numbergrade && numbergrade >= 73){
			document.getElementById('letter').value = "B";
		}
		
		else if(72 >= numbergrade && numbergrade >= 70){
			document.getElementById('letter').value = "B-";
		}
		
		else if(69 >= numbergrade && numbergrade >= 66){
			document.getElementById('letter').value = "C+";
		}
		
		else if(65 >= numbergrade && numbergrade >= 63){
			document.getElementById('letter').value = "C";
		}
		
		else if(62 >= numbergrade && numbergrade >= 60){
			document.getElementById('letter').value = "C-";
		}
		
		else if(59 >= numbergrade && numbergrade >= 55){
			document.getElementById('letter').value = "D+";
		}
		
		else if(54 >= numbergrade && numbergrade >= 50){
			document.getElementById('letter').value = "D";
		}
		
		else{
			document.getElementById('letter').value = "F";
		}
	} ;

		
		© Nicole Gillis 2017

2 Ответов

Рейтинг:
2

OriginalGriff

Вернитесь к своим заметкам курса и прочитайте их еще раз: вы не можете просто сбросить код javascript в середине страницы и надеяться, что браузер волшебным образом поймет, что он не предназначен для отображения!

Если бы я был на вашем месте, я бы снова начал с "Привет, мир" и правильно отсортировал бы концепции и идеи, стоящие за этим, в вашем уме: хотя это правда, что

Цитата:
никто никогда не будет использовать JavaScript, чтобы заставить страницу сказать " Привет, мир"
Речь идет о концепциях и о том, чтобы начать с малого, чтобы вы могли легко понять, что происходит, - и вы явно пропустили все это до сих пор. Речь идет не о том, чтобы" сделать что - то более сложным способом", а о том, чтобы" научить вас ползать, прежде чем вы научитесь ходить " - и если ребенок пропустит этот шаг, он никогда не сможет бегать без массивной лицевой установки на каждом втором шаге...


Рейтинг:
2

Patrice T

У вашего кода есть множество проблем, самая большая из которых заключается в том, что это не html-страница.
Этот код слишком сложен

if(numbergrade >= 90){
	document.getElementById('letter').value = "A+";
}
else if(89 >= numbergrade && numbergrade >= 85){ // you reach this point only if all previous confitions are false
	document.getElementById('letter').value = "A";
}
else if(84 >= numbergrade && numbergrade >= 80){ // you reach this point only if all previous confitions are false
	document.getElementById('letter').value = "A-";
}
...

что приводит к упрощению
if(numbergrade >= 90){
	document.getElementById('letter').value = "A+";
}
else if(numbergrade >= 85){
	document.getElementById('letter').value = "A";
}
else if(numbergrade >= 80){
	document.getElementById('letter').value = "A-";
}
...

Это переписывание также решит еще одну вашу проблему.
Ваш код дает оценку "F", если numbergrade=85.5

Этот сайт поможет вам узнать все, что вам нужно для веб-приложений.
W3Schools Online Web Tutorials[^]