こんにちは。HTML5/JQueryで注文/並べ替えのクイズを作成する際に役立つアドバイスを探しています。非常に単純に、ページ上にランダムな順序で配置された一連のステップを表示したいので、ユーザーはそれらを並べ替えて正しい順序にする必要があります。jqueryライブラリとjquery-ui-1.8.5.custom.min.jsファイルを使用し、ページで次のjavascriptを呼び出す「どこか」の例を見つけることができました。
<script type="text/javascript" src="../scripts/jquery-1.4.3.min.js"></script>
<script type="text/javascript" src="../scripts/jquery-ui-1.8.5.custom.min.js"> </script>
<script type="text/javascript">
var correctOrder = new Array();
var liItems = new Array();
$(function() {
$("#sortable").sortable({placeholder: 'ui-state-highlight'});
$("#sortable").disableSelection();
var ul = document.getElementById('sortable');
var li = ul.getElementsByTagName("li");
for(var i = 0; i < li.length; i++){
correctOrder.push(li[i].innerHTML);
liItems.push(li[i]);
}
});
(function($){
$.fn.shuffle = function() {
return this.each(function(){
var items = $(this).children();
return (items.length)
? $(this).html($.shuffle(items))
: this;
});
}
$.shuffle = function(arr) {
for(
var j, x, i = arr.length; i;
j = parseInt(Math.random() * i),
x = arr[--i], arr[i] = arr[j], arr[j] = x
);
return arr;
}
})(jQuery);
function resetForm(){
$('#sortable').shuffle();
for(var i = 0;i < liItems.length; i++){
liItems[i].className = "";
}
}
function checkForm(){
var ul = document.getElementById('sortable');
var li = ul.getElementsByTagName("li");
for(var i = 0;i < li.length; i++){
if(li[i].innerHTML != correctOrder[i]){
li[i].className = "incorrect";
}else{
li[i].className = "correct";
}
}
}
</script>
このコードは正常に機能しているように見えますが、リストアイテムの順序は正常にランダム化されません(body htmlは、idが'sortable'の順序付けられていないクラスを持つdivです。リセット関数を初期化コードにスローしようとしましたが、それだけです。順序と回答をランダム化しますが、これは間違いなく私が望まないことです。ユーザーがページに移動して[送信]をクリックするだけで、リストアイテムがランダム化されなかったため、すべての回答が正しくなります。
これが理にかなっていることを願っています。私はJSに少し慣れていません。制限があるため、FlashとActionScriptから離れたいと思っています。
ありがとう