Reputation: 323
I'm trying to create a "quiz" using JavaScript/Html. Before I begin, I'd just like to say that I was introduced to this language 4 hours ago as of this posting, so please, please be patient with me. This is what I've written so far:
<!DOCTYPE html>
<html>
<body>
<form name="input" action="html_form_action.asp" method="get">
<input type="radio" name="Q1" value="A1">A1<br>
<input type="radio" name="Q1" value="A2">A2<br>
<input type="radio" name="Q1" value="A3">A3<br>
<input type="radio" name="Q1" value="A4">A4<br><br>
<input type="radio" name="Q2" value="A1">A1<br>
<input type="radio" name="Q2" value="A2">A2<br>
<input type="radio" name="Q2" value="A3">A3<br>
<input type="radio" name="Q2" value="A4">A4<br><br>
<input type="radio" name="Q3" value="A1">A1<br>
<input type="radio" name="Q3" value="A2">A2<br>
<input type="radio" name="Q3" value="A3">A3<br>
<input type="radio" name="Q3" value="A4">A4<br><br>
<input type="radio" name="Q4" value="A1">A1<br>
<input type="radio" name="Q4" value="A2">A2<br>
<input type="radio" name="Q4" value="A3">A3<br>
<input type="radio" name="Q4" value="A4">A4<br><br>
<input type="radio" name="Q5" value="A1">A1<br>
<input type="radio" name="Q5" value="A2">A2<br>
<input type="radio" name="Q5" value="A3">A3<br>
<input type="radio" name="Q5" value="A4">A4<br><br>
<input type="radio" name="Q6" value="A1">A1<br>
<input type="radio" name="Q6" value="A2">A2<br>
<input type="radio" name="Q6" value="A3">A3<br>
<input type="radio" name="Q6" value="A4">A4<br><br>
<input type="radio" name="Q7" value="A1">A1<br>
<input type="radio" name="Q7" value="A2">A2<br>
<input type="radio" name="Q7" value="A3">A3<br>
<input type="radio" name="Q7" value="A4">A4<br><br>
<input type="radio" name="Q8" value="A1">A1<br>
<input type="radio" name="Q8" value="A2">A2<br>
<input type="radio" name="Q8" value="A3">A3<br>
<input type="radio" name="Q8" value="A4">A4<br><br>
<input type="radio" name="Q9" value="A1">A1<br>
<input type="radio" name="Q9" value="A2">A2<br>
<input type="radio" name="Q9" value="A3">A3<br>
<input type="radio" name="Q9" value="A4">A4<br><br>
<input type="radio" name="Q10" value="A1">A1<br>
<input type="radio" name="Q10" value="A2">A2<br>
<input type="radio" name="Q10" value="A3">A3<br>
<input type="radio" name="Q10" value="A4">A4<br><br>
<script>
function checkTest()
{
var count = 0;
if ($('input:radio[name=Q1]:checked').val() == A1);
{
count = count + 1;
}
if ($('input:radio[name=Q2]:checked').val() == A1);
{
count = count + 1;
}
if ($('input:radio[name=Q3]:checked').val() == A1);
{
count = count + 1;
}
if ($('input:radio[name=Q4]:checked').val() == A1);
{
count = count + 1;
}
if ($('input:radio[name=Q5]:checked').val() == A1);
{
count = count + 1;
}
if ($('input:radio[name=Q6]:checked').val() == A1);
{
count = count + 1;
}
if ($('input:radio[name=Q7]:checked').val() == A1);
{
count = count + 1;
}
if ($('input:radio[name=Q8]:checked').val() == A1);
{
count = count + 1;
}
if ($('input:radio[name=Q9]:checked').val() == A1);
{
count = count + 1;
}
if ($('input:radio[name=Q10]:checked').val() == A1);
{
count = count + 1;
}
if (count > 6)
{
alert("Congratulations! You Passed!");
}
else
{
alert("You answered too many questions incorrectly. Try again.");
}
}
</script>
<button type="button" onclick="checkTest()">Submit Test!</button>
</form>
I would think that if I just chose "A1" for all my answers, I would get the Congratulations alert, but I don't get anything at all. I got the
($('input:radio[name=Q10]:checked').val()
straight from a different post on this website, so I don't think that it's the problem. Please help!!
EDIT: I understand that Javascript is a bad way to do this, but I really am just trying to get the language down, and, besides, this would only be used on an extremely small scale.
Upvotes: 1
Views: 3734
Reputation: 7618
Add the following just before the <body>
tag:
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
This loads jQuery
into your page, letting you use the $
object.
;
at the end of each if
statement, preventing them from executing code if the condition is met or not!== "A1"
part the wrong way: == A1
, making JavaScript try to compare the selected object value to an empty variable called A1
.function checkTest() {
var count = 0;
if ($('input[type="radio"][name=Q1]:checked').val() == "A1") {
count++;
}
if ($('input[type="radio"][name=Q2]:checked').val() == "A1") {
count++;
}
if ($('input[type="radio"][name=Q3]:checked').val() == "A1") {
count++;
}
if ($('input[type="radio"][name=Q4]:checked').val() == "A1") {
count++;
}
if ($('input[type="radio"][name=Q5]:checked').val() == "A1") {
count++;
}
if ($('input[type="radio"][name=Q6]:checked').val() == "A1") {
count++;
}
if ($('input[type="radio"][name=Q7]:checked').val() == "A1") {
count++;
}
if ($('input[type="radio"][name=Q8]:checked').val() == "A1") {
count++;
}
if ($('input[type="radio"][name=Q9]:checked').val() == "A1") {
count++;
}
if ($('input[type="radio"][name=Q10]:checked').val() == "A1") {
count++;
}
if (count > 6) {
alert("Congratulations! You Passed!");
} else {
alert("You answered too many questions incorrectly. Try again.");
}
}
PS: I would highly recommend you not to use jQuery if you just started coding HTML and JavaScript.
Upvotes: 4
Reputation: 8937
Your checkTest
function can be shortened, because in a group of radio buttons, only one can be checked anyways:
function checkTest() {
var count = 0;
for (var i=0,$el=$('input[type="radio"]:checked'),size=$el.size(); i<size; i++){ if ($el.eq(i).val() === 'A1') count++; }
if (count > 6) alert("Congratulations! You Passed!");
else alert("You answered too many questions incorrectly. Try again.");
}
Upvotes: 1
Reputation: 56509
($('input:radio[name=Q10]:checked').val() // belongs to jQuery
You're using jquery, so add the respective scripts in it.
Also you id statements should be
if ($('input:radio[name=Q1]:checked').val() === 'A1');
missing ''(quotes) on right hand side value and it is better to use ===
instead of ==
.
Upvotes: 1