ここでは、答えを決定するために数式を実行する例を示します。スマートな受験生は、ソースコードを見て、コード内に答えの配列が隠されているかどうかを調べるかもしれません。
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
でそれを見ることができ、それをtに追加する彼はカード。また、ユーザーは質問を完了したことを知っているので、回答のドラッグが無効になっています。
これは 'drop'で行うことができます。あなたのコードをこれまでのところ見る必要がありますか、それとももっと答えたいかの例があります。また、私は1年前のような非常に似た質問に答えたことを知っています。 – Twisty