テーブル項目の入れ替え
- 必要性から自分で書いてみました。
- 作ってはみたものの、もうDraggableにぐりぐりやれるものを書けないとダメなんでしょうね。。
- きちんと整理しきれていませんがコピペで動作すると思います
<script type="text/javascript">
function moveUp(oj){
var cloneObj = oj.parentNode.parentNode.cloneNode(true);
var tbodyNode = document.getElementById('tbody_node');
var oldId = cloneObj.id;
var swap = oldId.slice(2,3);
if(swap.slice(0,1) != '0'){
if(swap - 1 != '0'){
var tmp = swap - 1;
var newId = "no" + tmp;
cloneObj.id = newId;
var changedNode = document.getElementById(newId);
changedNode.id = oldId;
var Browser = navigator.userAgent;
if(Browser.match(/MSIE/)){
tbodyNode.insertBefore(cloneObj, tbodyNode.childNodes[tmp-1]);
} else if(Browser.match(/Gecko/)){
var gecko_tmp = tmp * 2 - 1;
tbodyNode.insertBefore(cloneObj, tbodyNode.childNodes[gecko_tmp]);
}
oj.parentNode.parentNode.parentNode.removeChild(oj.parentNode.parentNode);
}
}
}
function moveDown(oj){
var cloneObj = oj.parentNode.parentNode.cloneNode(true);
var tbodyNode = document.getElementById('tbody_node');
var oldId = cloneObj.id;
var swap = oldId.slice(2,3);
var lastnum = 0;
for(var i=0; i<tbodyNode.childNodes.length; i++){
if(tbodyNode.childNodes[i].nodeName == 'TR'){
lastnum++;
}
}
if(swap.slice(0,1) != '0'){
if(swap != lastnum){
var tmp = parseInt(swap) + 1;
var newId = "no" + tmp;
cloneObj.id = newId;
var changedNode = document.getElementById(newId);
changedNode.id = oldId;
var Browser = navigator.userAgent;
if(Browser.match(/MSIE/)){
tbodyNode.insertBefore(cloneObj, tbodyNode.childNodes[tmp-1].nextSibling);
} else if(Browser.match(/Gecko/)){
if(tmp == 2){
var gecko_tmp = tmp * 2 - 1;
} else {
var gecko_tmp = tmp * 2;
}
for(var i=0; i<tbodyNode.childNodes.length; i++){
if(tbodyNode.childNodes[i].nodeType == 1){
} else {
}
}
tbodyNode.insertBefore(cloneObj, tbodyNode.childNodes[gecko_tmp].nextSibling);
}
oj.parentNode.parentNode.parentNode.removeChild(oj.parentNode.parentNode);
}
}
}
function add(){
var org = document.getElementById('no1');
var clone = org.cloneNode(true);
var tbody = document.getElementById('tbody_node');
tbody.appendChild(clone);
alert('属性値は処理してません');
}
function test(oj){
var nodeId = oj.parentNode.parentNode;
alert(nodeId.id);
}
</script>
<table border="1">
<tbody id="tbody_node">
<tr id="no1">
<td><input type="button" value="↑" onclick="moveUp(this)">
<input type="button" value="↓" onclick="moveDown(this)"></td>
<td>001<input type="button" value="alert(this.id)" onclick="test(this)"></td>
</tr>
<tr id="no2">
<td><input type="button" value="↑" onclick="moveUp(this)">
<input type="button" value="↓" onclick="moveDown(this)"></td>
<td>002<input type="button" value="alert(this.id)" onclick="test(this)"></td>
</tr>
<tr id="no3">
<td><input type="button" value="↑" onclick="moveUp(this)">
<input type="button" value="↓" onclick="moveDown(this)"></td>
<td>003<input type="button" value="alert(this.id)" onclick="test(this)"></td>
</tr>
<tr id="no4">
<td><input type="button" value="↑" onclick="moveUp(this)">
<input type="button" value="↓" onclick="moveDown(this)"></td>
<td>004<input type="button" value="alert(this.id)" onclick="test(this)"></td>
</tr>
</tbody>
</table>
<!-- <input type="button" value="add_rows" onclick="add()"> -->