Balthasar
Balthasar

Reputation: 323

Radio button quiz

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

Answers (3)

Jeff Noel
Jeff Noel

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.


Syntax errors

  • You have put ; at the end of each if statement, preventing them from executing code if the condition is met or not!
  • You wrote == "A1" part the wrong way: == A1, making JavaScript try to compare the selected object value to an empty variable called A1.

JavaScript/jQuery

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.");
    }
}

Live Demo (JSFiddle)

PS: I would highly recommend you not to use jQuery if you just started coding HTML and JavaScript.

Upvotes: 4

SeinopSys
SeinopSys

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

Praveen
Praveen

Reputation: 56509

($('input:radio[name=Q10]:checked').val() // belongs to jQuery

You're using , 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

Related Questions