这是一个示例,它还执行数学以确定答案。聪明的应试者可能会查看源代码,以了解代码中是否隐藏了一系列答案。
HTML
<div class="ui-widget questions">
<div class="ui-widget-header">
1. Math
</div>
<div class="ui-widget-content">
<h5>Question</h5>
<div class="card addend">
3
</div>
<div class="card operator plus">
+
</div>
<div class="card addend">
2.2
</div>
<div class="card operator equal">
=
</div>
<div class="card unanswered">
</div>
<h5>Answers</h5>
<div class="card answer">
4.5
</div>
<div class="card answer">
3.2
</div>
<div class="card answer">
5.2
</div>
<div class="card answer">
5.5
</div>
</div>
<div class="ui-widget-header">
2. Math
</div>
<div class="ui-widget-content">
<h5>Question</h5>
<div class="card addend">
5.2
</div>
<div class="card operator plus">
+
</div>
<div class="card addend">
2.3
</div>
<div class="card operator equal">
=
</div>
<div class="card unanswered">
</div>
<h5>Answers</h5>
<div class="card answer">
6.5
</div>
<div class="card answer">
8.2
</div>
<div class="card answer">
7.2
</div>
<div class="card answer">
7.5
</div>
</div>
</div>
JavaScript
function checkAnswer(a1, a2, op, answer) {
console.log(a1, op, a2, "=", answer);
var sum;
var ops = {
"+": function(a, b) {
return a + b;
},
"-": function(a, b) {
return a - b;
},
"*": function(a, b) {
return a * b;
},
"/": function(a, b) {
return a / b;
}
}
sum = ops[op](a1, a2);
console.log(sum);
return (sum == answer);
}
$(function() {
$(".answer").draggable({
revert: true,
containment: "parent"
});
$(".unanswered").droppable({
accept: ".answer",
drop: function(event, ui) {
var q = $(this).parent();
var add1 = parseFloat(q.find(".addend").eq(0).html());
var add2 = parseFloat(q.find(".addend").eq(1).html());
var op1 = q.find(".operator").eq(0).html().trim();
var ans = parseFloat(ui.draggable.html());
var success = checkAnswer(add1, add2, op1, ans);
if (success) {
q.find(".unanswered").html(ans).toggleClass("unanswered answered");
q.find(".answer").draggable("destroy").css({
background: "#eee",
color: "#ccc"
});
} else {
return false;
}
}
});
});
工作示例:https://jsfiddle.net/Twisty/prc8tzw5/
这里的回复是true,你可以看到drop,如果答案是正确的,它会附加到卡片上。它还禁用了答案的可拖动功能,以便用户知道他们已经完成了问题。