以下のコードでtableタグ内のtrをシャッフルしたのですが
それを元どおりの順に戻したいのですがどのようなjavascriptを組めばいいでしょうか?
function shuffle() {
var a = document.getElementsByTagName("TABLE");
var b = Array.prototype.slice.apply(a[0].getElementsByTagName("tr"));
for (var c = b.length; c > 0; c--) {
var d = Math.floor(c * Math.random());
a[0].appendChild(b[d]);
b.splice(d, 1);
}
}
以前の質問 http://q.hatena.ne.jp/1386097266 で提示されていた jsFiddle のコードを、ちょっといじってみました。
http://jsfiddle.net/k62Cu/2/
// テーブルの内容を保存しておく変数 var table_backup = ""; function sortTable(){ var tabs = document.getElementsByTagName('TABLE'); // 最初の一回目で、テーブルの内容を保存する if (table_backup == "") { table_backup = tabs[0].innerHTML; console.log(table_backup); } var bodies = Array.prototype.slice.apply(tabs[0].getElementsByTagName('tr')); for (var r = bodies.length; r > 0; r--) { var index = Math.floor(r * Math.random()); tabs[0].appendChild(bodies[index]); bodies.splice(index, 1); } } // テーブルの内容を元に戻す関数 function restoreTable() { if (table_backup != "") { var tabs = document.getElementsByTagName('TABLE'); tabs[0].innerHTML = table_backup; } }
テーブルをシャッフルする関数で、最初に呼ばれたときにテーブルの内容を保存しておきます。
テーブルの内容を元に戻す関数で、保存した内容があれば、テーブルに戻します。
元どおりの順番といわれても その順番がどのような順番なのか わからなければ戻せないと思います。
ソートする前に 前の順番を配列に保存してから ソートし、戻すときは、その配列から取得して戻せばいいのではないでしょうか?
以前の質問 http://q.hatena.ne.jp/1386097266 で提示されていた jsFiddle のコードを、ちょっといじってみました。
http://jsfiddle.net/k62Cu/2/
// テーブルの内容を保存しておく変数 var table_backup = ""; function sortTable(){ var tabs = document.getElementsByTagName('TABLE'); // 最初の一回目で、テーブルの内容を保存する if (table_backup == "") { table_backup = tabs[0].innerHTML; console.log(table_backup); } var bodies = Array.prototype.slice.apply(tabs[0].getElementsByTagName('tr')); for (var r = bodies.length; r > 0; r--) { var index = Math.floor(r * Math.random()); tabs[0].appendChild(bodies[index]); bodies.splice(index, 1); } } // テーブルの内容を元に戻す関数 function restoreTable() { if (table_backup != "") { var tabs = document.getElementsByTagName('TABLE'); tabs[0].innerHTML = table_backup; } }
テーブルをシャッフルする関数で、最初に呼ばれたときにテーブルの内容を保存しておきます。
テーブルの内容を元に戻す関数で、保存した内容があれば、テーブルに戻します。
おおおお!ありがとうございます!
あの、これをボタンじゃなくて画像アイコン押したら変えれるようにするにはどこを変えればいいのでしょうか?
これをボタンじゃなくて画像アイコン押したら変えれるようにするにはどこを変えればいいのでしょうか?
こんな感じで。
http://jsfiddle.net/s52ng87d/2/
です。
おおおお!ありがとうございます!
2014/10/20 14:31:26あの、これをボタンじゃなくて画像アイコン押したら変えれるようにするにはどこを変えればいいのでしょうか?
こんな感じで。
http://jsfiddle.net/s52ng87d/2/
です。
2014/10/20 15:17:53