Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 4 of 4
  1. #1
    New Coder
    Join Date
    Sep 2011
    Posts
    25
    Thanks
    8
    Thanked 0 Times in 0 Posts

    Fill in the blank and multiple choice quiz

    I was wondering if someone could help me? In my code below what if answers in question 2 were allowed to be in any order? Like: hips,body,knees or knees,hips,body and so on. How should I modify my code? Anyone please????

    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <title>Quiz</title>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <script type="text/javascript">
    var answer_list = [
        ['False'],
        ['body,hips,knees']
    
    // Note: No comma after final entry
    ];
    
    var response = [];
    
    function getCheckedValue(radioObj) {
        if(!radioObj)
            return "";
        var radioLength = radioObj.length;
        if(radioLength == undefined)
            if(radioObj.checked)
                return radioObj.value;
            else
                return "";
        for(var i = 0; i < radioLength; i++) {
            if(radioObj[i].checked) {
                return radioObj[i].value;
            }
        }
        return "";
    }
    
    function setAnswer(question, answer) {
        response[question] = answer;
    }
    
    function CheckAnswers() {
        var correct = 0;
        var resp, answ;
        for (var i = 0; i < answer_list.length; i++) {
            resp = response[i].toString();
            resp = resp.toLowerCase();
            answ = answer_list[i].toString();
            answ = answ.toLowerCase();
    //#################################################################################################
            if (resp == answ) {
                correct++;
                if(i==0){
                    document.forms[0].a1c.style.backgroundImage="url('correct.gif')";
                    document.forms[0].a1c.value = "";
                }
                else{
                    document.forms[0].a1d.style.backgroundImage="url('correct.gif')";
                    document.forms[0].a1d.value = "";
                }
            }
            else{
                if(i==0){
                    document.forms[0].a1c.style.backgroundImage = "url('incorrect.gif')";
                    document.forms[0].a1c.value = " ANS: False. Position the head snugly against the top bar of the frame and then bring the foot board to the infant's feet.";
                }
                else{
                    document.forms[0].a1d.style.backgroundImage = "url('incorrect.gif')";
                    document.forms[0].a1d.value = " ANS: " + answ;
                }
    //###################################################################################################
            }
        }
        document.writeln("You got " + correct + " of " + answer_list.length + " questions correct!");
    }
    </script>
    </head>
    <body>
    <form action="" method="post">
    <div>
    <b>1. When measuring height/length of a child who cannot securely stand, place the infant such that his or her feet are flat against the foot board.</b><br />
    <label><input type="radio" name="question0" value="True" />True</label>
    <label><input type="radio" name="question0" value="False" />False</label>
    <br />
    <textarea rows="2" cols="85" name="a1c" style="background-repeat:no-repeat"></textarea>
    <br />
    <b>2. When taking a supine length measurement, straighten the infant's
    <input type="text" name="question1_a" size="10" />, 
    <input type="text" name="question1_b" size="10" />, and 
    <input type="text" name="question1_c" size="10" />.</b>
    <br />
    <textarea rows="2" cols="85" name="a1d" style="background-repeat:no-repeat"></textarea>
    <br />
    <input type="button" name="check" value="Check Answers" onclick="setAnswer(0,getCheckedValue(document.forms[0].question0));setAnswer(1,[document.forms[0].question1_a.value,document.forms[0].question1_b.value,document.forms[0].question1_c.value]);CheckAnswers();" />
    </div>
    </form>
    </body>
    </html>

  • #2
    Supreme Master coder! Old Pedant's Avatar
    Join Date
    Feb 2009
    Posts
    25,020
    Thanks
    75
    Thanked 4,323 Times in 4,289 Posts
    Well, fill in the blank quizzes don't work well with relatively dumb computer programs, because what happens if you are expecting the answer "hips" and the user enters "hip" or maybe "shoulders" vs. "clavicles" or or or??

    You almost surely need to allow for different spellings and synonyms, and that complicates your life.

    So...how far do you want to take this?
    An optimist sees the glass as half full.
    A pessimist sees the glass as half empty.
    A realist drinks it no matter how much there is.

  • #3
    New Coder
    Join Date
    Sep 2011
    Posts
    25
    Thanks
    8
    Thanked 0 Times in 0 Posts
    Let's say that the only acceptable answer is a combination of these 3 words
    body, hips, knees

    If they type in 'hip' then we'll just mark it as wrong.
    Thank you.

  • #4
    Senior Coder jmrker's Avatar
    Join Date
    Aug 2006
    Location
    FL
    Posts
    3,028
    Thanks
    36
    Thanked 494 Times in 488 Posts

    Lightbulb

    One possibility ...
    Code:
    <script type="text/javascript">
    
    function checkAnswers(cArr,response) {
      var flag = false;
      for (var i=0; i<cArr.length; i++) {
        if (cArr[i] == response) { flag = true; }
    // following for partial match of responses
    //    if (cArr[i].indexOf(response) != -1) { flag = true; }
      }
      return flag;
    }
    
    // following can be part of question/response/answer array
    var correctAnswers = ['body','hips','knees'];  
    
    // following are simulated responses from an HTML <input> tag
    var responses = ['body','bod','hips','hip','knees','knee','legs','hands'];
    
    // simulation
    for (var i=0; i<responses.length; i++) {
      if (checkAnswers(correctAnswers,responses[i])) {
        alert(correctAnswers+'\n\n'+responses[i]+' is correct');
      } else {
        alert(correctAnswers+'\n\n'+responses[i]+' was NOT found');
      }
    }
    </script>
    ... of many!

    Good Luck!


  •  

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •