I’m new to Javascript and have a course Assignment to create messages using the IF function.
We are learning Logical Operators that we need to use in this assignment. (|| &&)
Would GREATLY appreciate help, feedback, suggestions!
Assignment:
Create a set of if functions that will replace the content in the “message” paragraph with a specific message according to the following criteria:
a. If the student achieved a score of 10, the paragraph should read “Congratulations on your perfect score!”
b. If the student achieved a score of 8 or 9, the paragraph should read “You did very well! Keep learning.”
c. If the student achieved a score of 5, 6 or 7, the paragraph should read “You passed, but there is some room for improvement”
d. If the student achieved a score lower than 5, the paragraph should read “Sorry, you did not achieve a passing grade. Keep working at it!”
My Assignment Result:
var message = document.getElementById("message");
var score$1 = 10;
var score$2 = 9;
var score$3 = 8;
var score$4 = 7;
var score$5 = 6;
var score$6 = 5;
var score$7 = 4;
//If the student achieved a score of 10, the paragraph should read "Congratulations on your perfect score!"
if (score$1 == 10) {
message.innerHTML = "Congratulation on your perfect score!";
}
//If the student achieved a score of 8 or 9, the paragraph should read "You did very well! Keep learning."
if ((score$3 == 8) || (score$2 == 9)) {
message.innerHTML = "You did very well! Keep learning.";
}
//If the student achieved a score of 5, 6 or 7, the paragraph should read "You passed, but there is some room for improvement."
if ((score$6 == 5) || (score$5 == 6) || (score$4 == 7)) {
message.innerHTML = "You passed, but there is some room for improvement.";
}
//If the student achieved a score lower than 5, the paragraph should read "Sorry, you did not achieve a passing grade. Keep working at it!"
if (score$7 < 5) {
message.innerHTML = "Sorry, you did not achieve a passing grade. Keep working at it!"
}
It looks like the score should be input? If so, then you should only have one input variable.
So you’d have something more like.
const message = document.getElementById(“message”);
const score = document.getElementById(“score”);
//If the student achieved a score of 10, the paragraph should read “Congratulations on your perfect score!”
if (score == 10) {
message.innerHTML = “Congratulation on your perfect score!”;
}
//If the student achieved a score of 8 or 9, the paragraph should read “You did very well! Keep learning.”
if ((score == 8) || (score == 9)) {
message.innerHTML = “You did very well! Keep learning.”;
}
//If the student achieved a score of 5, 6 or 7, the paragraph should read “You passed, but there is some room for improvement.”
if ((score == 5) || (score == 6) || (score == 7)) {
message.innerHTML = “You passed, but there is some room for improvement.”;
}
//If the student achieved a score lower than 5, the paragraph should read “Sorry, you did not achieve a passing grade. Keep working at it!”
if (score < 5) {
message.innerHTML = “Sorry, you did not achieve a passing grade. Keep working at it!”
}
Though this should be refactored using else if and you should probably use <= or >= instead of == || == || ==
Thank YOU! That’s great information and I understand your comment about the score.
Now I took your suggestion and added > and else if statements. Is the below correct?
//If the student achieved a score of 10, the paragraph should read "Congratulations on your perfect score!"
if (score$1 >= 10) {
message.innerHTML = "Congratulation on your perfect score!";
} else if
//If the student achieved a score of 8 or 9, the paragraph should read "You did very well! Keep learning."
(score$3 >= 8 || score$2 >= 9) {
message.innerHTML = "You did very well! Keep learning.";
} else if
//If the student achieved a score of 5, 6 or 7, the paragraph should read "You passed, but there is some room for improvement."
(score$6 >= 5 || score$5 >= 6 || score$4 >= 7) {
message.innerHTML = "You passed, but there is some room for improvement.";
}
else
//If the student achieved a score lower than 5, the paragraph should read "Sorry, you did not achieve a passing grade. Keep working at it!"
(score$7 < 5)
message.innerHTML = "Sorry, you did not achieve a passing grade. Keep working at it!";
}
You can do this yourself quite easily. Just select the block of text in the text editor and click on the </> in the horizontal menu at the top of the textbox and it will format it into a code block
Closer but not quite. Like m_hutley says, all of the score$ whatever should just be score. And the last else won’t work because you can’t have a condition without an if in that pattern (just remove the condition altogether).
Also the >= is being overused in your changes. ALL of them should remain == EXCEPT this one.
(score$6 >= 5 || score$5 >= 6 || score$4 >= 7) {
instead of having three checks, there should just be two, and it should use the && (and) instead of the || (or). So you should have something like this.
(score >= 5 && score <= 7) {
That line now says if score is greater than or equal to 5 AND less than or equal to 7 (meaning 5,6 or 7), then execute the code inside.
Might I also suggest you move the comments INSIDE the brackets. It will improve the code readability immensely. So instead of
else if
//If the student achieved a score of 8 or 9, the paragraph should read "You did very well! Keep learning."
(score$3 >= 8 || score$2 >= 9) {
message.innerHTML = "You did very well! Keep learning.";
}
You have
else if (score == 8 || score == 9) {
// If the student achieved a score of 8 or 9, the paragraph should read "You did very well! Keep learning."
message.innerHTML = "You did very well! Keep learning.";
}