Demo
問題.次の表をドラッグ&ドロップにより完成させてください。
| オリンピック |
開催国 |
2004年(夏季) アテネ |
|
2006年(冬季) トリノ |
|
2008年(夏季) ペキン |
|
|
|
ソースコード
ここでは JavaScript のみ掲載します。
CSS と HTML については「Drag & Drop - 共通ソース(CSS, HTML)」
全ソースコード
を参照してください。
script.aculo.us の読み込み
<script type="text/javascript" src="/usr/lib/scriptaculous/1.8.0/lib/prototype.js"></script>
<script type="text/javascript" src="/usr/lib/scriptaculous/1.8.0/src/scriptaculous.js?load=effects,dragdrop"></script>
|
JavaScript
<script type="text/javascript">
//<![CDATA[
(function() {
var correct = { opt0: 'ans1', opt1: 'ans2', opt2: 'ans0' } // 正解
var mark = function(event) {
var points = 0;
var max = 0;
for (key in correct) {
var answer = $(key).parentNode.id;
points += (correct[key] == answer) ? 1: 0;
++max;
}
var score = Math.floor(points / max * 100);
var judge = (score >= 70) ? '合格': '不合格';
$('result').update(judge + ':' + score + '%');
}
var optDropzone = {
hoverclass: 'dragenter',
onDrop: function(drag, drop) {
drag.parentNode.setStyle({ zIndex: 0 });
drag.setStyle({ left: 0, top: 0 });
if (drop.select('.draggable').length == 0) {
drop.appendChild(drag);
}
}
}
var optDraggable = {
starteffect: function(drag) {
drag.parentNode.setStyle({ zIndex: 1 });
drag.setStyle({ opacity: 0.5 });
},
endeffect: function(drag) {
drag.parentNode.setStyle({ zIndex: 0 });
drag.setStyle({ opacity: 1.0 })
.setStyle({ left: 0, top: 0 });
}
}
document.observe('dom:loaded', function() {
$$('.dropzone').each(function(drop) {
Droppables.add(drop, optDropzone);
});
$$('.draggable').each(function(drag) {
new Draggable(drag, optDraggable);
});
$('submit').observe('click', mark);
$('wait').setStyle({ display: 'none' });
});
}());
//]]>
</script>
|
更新履歴
| 日付 |
内容 |
| 2007-12-27 |
変更 |
script.aculo.us をバージョンアップ(1.7.0 → 1.8.0)
|
| 追加 |
IE の z-index 問題について、解決策を盛り込んだ
(z-index は、ドラッグ要素ではなく、ドラッグ要素の「親」に対して設定する)。
|
| 追加 |
“ほぼ”2007-02-12版(script.aculo.us 1.7.0)の、
全ソースコード
ページを追加。
|
| 2007-02-12 |
変更 |
ドラッグ&ドロップから解答の更新を削除(mark 関数内で操作結果を調べる)。
revert の視覚効果をシンプルに。
|
| 2007-02-09 |
変更 |
script.aculo.us をバージョンアップ(1.6.4 → 1.7.0)
|
| 変更 |
ソースコードを全面的に書き直し。
|
| 2006-09-16 |
変更 |
script.aculo.us をバージョンアップ(1.6.1 → 1.6.4)
|
| 追加 |
ドロップゾーンへの干渉をオレンジ色で表現。
ドロップゾーンに先客が居る場合は、ドロップをキャンセル。
|
| 2006-05-19 |
初版 |
|