<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>English</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="robots" content="index, follow"/>
<meta name="description" content=""/>
<meta name="author" content="johnk" />
<meta name="keywords" content=""/>
<style>
ol li {
background-image: none
padding:10px
}
</style>
</head>
<body>
<div id="pagewrap">
<div id="container">
<div id="content">
<h4>For, since or ago?</h4>
<div class="scroll">
<form method="post" id="myForm" name="f">
<ol>
<li>
It's been raining
<select name="question1">
<option value="na"> </option>
<option value="a"> for </option>
<option value="b"> since </option>
<option value="c"> ago </option>
</select>
2 hours.
</li>
<li>
They have lived here
<select name="question2">
<option value="na"> </option>
<option value="a"> for </option>
<option value="b"> since </option>
<option value="c"> ago </option>
</select>
1990.
</li>
</ol>
<input type="submit" id="submit" value="Result" />
<input type="reset" class="reset" id="reset" name="reset" value="Start again" />
</form>
<div id="score"></div>
<div class="address">
</div>
</div>
</div>
</div>
</div>
<script>
Object.size = function(obj) {
var size = 0, key
for (key in obj) {
if (obj.hasOwnProperty(key)) size++
}
return size
}
(function(){
"use strict"
window.checkAnswers = function(opts){
function validateInput(){
var question,
answer
for (question in opts) {
if(opts.hasOwnProperty(question)) {
answer = f.elements[question].options[f.elements[question].selectedIndex].value
if(answer === "na"){
opts[question].state = "not-filled-in"
} else if(answer === opts[question].answer){
opts[question].state = "correct"
} else {
opts[question].state = "error"
}
}
}
}
function markCorrectOrIncorrect(){
var question,
li
for (question in opts) {
if(opts.hasOwnProperty(question)) {
var img = new Image(),
li = f.elements[question].parentElement,
feedbackImg = li.getElementsByTagName('img')[0]
if (feedbackImg){
li.removeChild(feedbackImg)
}
if(opts[question].state === "correct"){
img.src = "http://www.littletherese.com/tick.jpg"
li.appendChild(img)
} else if(opts[question].state === "error"){
img.src = "http://www.littletherese.com/x.jpg"
li.appendChild(img)
}
}
}
}
function displayScore(){
var correct = 0,
error = 0,
score = document.getElementById("score"),
totalQuestions = Object.size(opts),
question
for (question in opts) {
if(opts.hasOwnProperty(question)) {
if(opts[question].state === "correct"){
correct ++
} else if(opts[question].state === "error"){
error ++
}
}
}
score.innerHTML = "You got " + correct + " out of " + totalQuestions
}
function init(){
validateInput()
markCorrectOrIncorrect()
displayScore()
}
init()
}
}())
f.onsubmit = function(){
checkAnswers({
question1: {answer: "a"},
question2: {answer: "b"},
})
return false
}
f.reset.onclick = function(){
var imgs = document.querySelectorAll('img')
for(var i=0
imgs[i].parentNode.removeChild(imgs[i])
}
document.getElementById("score").innerHTML = ""
}
</script>
</body>
</html>