我碰到的问题如下:
一个JSP页面有个table table里面数据格式如下:
单选框1 数据1 数据2 数据3
单选框2 数据4 数据5 数据6 单选框3 数据7 数据8 数据9 单选框4 数据10 数据11 数据12
<input type="button" value="提升优先级" onclick="do()"> 我现在想做的动作是 我选中一个单选框 比如 单选框3 然后点击 提升优先级 这个按钮 把单选框3对应的这行数据上移
到 单选框2这个位置 然后单选框2对应的这行数据就会下移到 单选框3这个位置 请问大牛们 这个逻辑在JS里面应该怎
么实现 ? 我刚接触J2EE哈哈 自己的想法是把数据放到数组里 然后遍历下互换位置 但这里会要先把数据组合成字符串 会涉及到遍历之前组装 换位后在拆分 感觉有点繁琐 求好点的方法 请大家不吝赐教 谢谢~~
一个JSP页面有个table table里面数据格式如下:
单选框1 数据1 数据2 数据3
单选框2 数据4 数据5 数据6 单选框3 数据7 数据8 数据9 单选框4 数据10 数据11 数据12
<input type="button" value="提升优先级" onclick="do()"> 我现在想做的动作是 我选中一个单选框 比如 单选框3 然后点击 提升优先级 这个按钮 把单选框3对应的这行数据上移
到 单选框2这个位置 然后单选框2对应的这行数据就会下移到 单选框3这个位置 请问大牛们 这个逻辑在JS里面应该怎
么实现 ? 我刚接触J2EE哈哈 自己的想法是把数据放到数组里 然后遍历下互换位置 但这里会要先把数据组合成字符串 会涉及到遍历之前组装 换位后在拆分 感觉有点繁琐 求好点的方法 请大家不吝赐教 谢谢~~
<td>单选框1</td> <td>数据1</td>
<tr/>
<tr id='tr2'>
<td>单选框2</td> <td>数据2</td>
<tr/> var tr1 = document.getElementById("tr1");
var tr2 = document.getElementById("tr2");
var tr1Str = tr1.innerHTML;
var tr2Str = tr2.innerHTML;
tr1.innerHTML = tr2Str;
tr2.innerHTML = tr1Str;
<html>
<head>
<title>这种方式支持任何浏览器</title>
<script>
function swapTR(action){
var oSelIpt = null;
var iptArr = document.getElementsByTagName('input');
for(var i=0,len=iptArr.length;i<len;i++){
if(iptArr[i].checked){
oSelIpt = iptArr[i];
break;
}
} if(!oSelIpt) return; var _row = oSelIpt.parentNode.parentNode; if(action==0) //上移
{
if(_row.previousSibling)//如果不是第一行
swapNode(_row, _row.previousSibling);
}else{
if(_row.nextSibling)
swapNode(_row, _row.nextSibling);
} //保证换行后单选框选中ie中
oSelIpt.checked = true
} function swapNode(node1, node2){
var _parent = node1.parentNode; //获取两个结点的相对位置
var _t1 = node1.nextSibling;
var _t2 = node2.nextSibling; //将node2插入到原来node1的位置
if(_t1) _parent.insertBefore(node2, _t1);
else _parent.appendChild(node2); //将node1插入到原来node2的位置
if(_t2)_parent.insertBefore(node1,_t2);
else _parent.appendChild(node1);
} function cleanWhitespace(element) {
for(var row = element.rows[0]; row; row = row.nextSibling){
if(row.nodeType==3){
var _row;
if(!row.previousSibling)
_row = row.nextSibling;
else
_row = row.previousSibling;
row.parentNode.removeChild(row);
row = _row;
}
}
}
window.onload = function(){
cleanWhitespace(document.getElementById('tab_test')); //火狐的tr间会有textnode节点,把他们都移除掉
}
</script>
</head>
<body>
<table id="tab_test">
<tr>
<td><input type='radio' name='row' checked /></td><td>1 </td><td>1 </td><td>1 </td>
</tr>
<tr>
<td><input type='radio' name='row' /></td><td>2 </td><td>2 </td><td>2 </td>
</tr>
<tr>
<td><input type='radio' name='row' /></td><td>3 </td><td>3 </td><td>3 </td>
</tr>
<tr>
<td><input type='radio' name='row' /></td><td>4 </td><td>4 </td><td>4 </td>
</tr>
</table><button onclick='swapTR(0)' >上移</button>
<button onclick='swapTR(1)' >下移</button>
</body>
</html>
根据你的要求,现写的,楼主 给分吧ie firefox chrome 都测试了
<head>
<style type="text/css">
table {
border: 1px solid #CCC;
border-collapse:collapse;
}
tr {
border: 1px solid #CCC;
border-collapse:collapse;
}
</style>
<script>
function upgrade()
{
var radios=document.getElementsByTagName("input");
var checkedRadio=null;
for(var i=1,len=radios.length;i<len;i++){
if(radios[i].checked){
checkedRadio = radios[i];
break;
}
}
// checkedRadio.checked=true;
var row=checkedRadio.parentNode.parentNode;
var parent=row.parentNode;
var insertedNode=row;
var baseNode=row.previousSibling;
//
if(insertedNode.nextSibling)
{
parent.insertBefore(baseNode, insertedNode);
}else {
arent.appendChild(baseNode);
}
//
if(baseNode.nextSibling)
{
parent.insertBefore(insertedNode, baseNode);
}else {
arent.appendChild(insertedNode);
}
checkedRadio.checked=true;
}
</script>
</head>
<body>
<table align="center" border="1" width="50%">
<tr>
<td>
<input type="radio" id="test11" name="test11" checked/>test1
</td>
<td>1</td>
<td>1</td>
<td>1</td>
<tr/>
<tr>
<td>
<input type="radio" id="test11" name="test11" />test2
</td>
<td>2</td>
<td>2</td>
<td>2</td>
<tr/>
<tr>
<td>
<input type="radio" id="test11" name="test11" />test3
</td>
<td>3</td>
<td>3</td>
<td>3</td>
<tr/>
<tr>
<td>
<input type="radio" id="test11" name="test11" />test4
</td>
<td>4</td>
<td>4</td>
<td>4</td>
<tr/>
</table>
<div align="center"><button onclick="upgrade()">upgrade</button></div>
</body>
</html>