如何交换两个<tr>标签里面的内容(求一个javascript函数) <input type="button" value="向上"> 是我加入的一段代码,它不起作用,主要想知道如果标签嵌套了多层要怎么操作,能不能把<td>标签里面的东西当整体 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <html><head><title>Untitled Document</title></head><body><table width="75%" border="1"> <TR id="tr"> <TD> 001 </TD> <TD id="td" name="tdName"> 张三 <input type="button" value="向上"> </TD> </TR> <TR id="tr"> <TD> 002 </TD> <TD id="td" name="tdName"> 李四 <input type="button" value="向上"> </TD> </TR> </table> <input type=button value="交换" onclick="test()" > <script language="JavaScript" type="text/JavaScript">function test(){ var sTD = td[0].innerHTML; td[0].innerHTML = td[1].innerHTML; td[1].innerHTML = sTD;}</script></body></html> 以下代码可以实现“向上”的功能(ie&&ff)。至于“交换”,我个人认为没有必要:)<body><table><tr><td>001</td><td>张三</td><td><input type="button" value="向上" onclick="move_up(this)"/></td></tr><tr><td>002</td><td>李四</td><td><input type="button" value="向上" onclick="move_up(this)"/></td></tr><tr><td>003</td><td>王五</td><td><input type="button" value="向上" onclick="move_up(this)"/></td></tr><tr><td>004</td><td>赵六</td><td><input type="button" value="向上" onclick="move_up(this)"/></td></tr></table></body><script type="text/javascript">function move_up(el){ var tr=el.parentNode.parentNode; var tbl=tr.parentNode; var trs=tbl.getElementsByTagName("tr"); var cur; for(var i=0;i<trs.length;i++){ if(trs[i]==tr){ cur=i; break; } } if(cur)tbl.insertBefore(trs[cur],trs[cur-1]);}</script> tr为什么不行? 这种交换法到底适用范围是什么?不是tr为什么不行,是因为你tr里还包含了其他的文本,和代码,不是你想要的东西,而你想要的是接近的那部分! 我测试了一下insertBefore(a, b)函数,我的理解是把a对象插到b对象的前面,如果a对象已经存在,则a对象相当于移动了位置,如果a对象是新创建的,那么相当于插入新的对象。测试代码如下<td><input type="button" value="向上" onclick="move_up(this)"/></td></tr><tr><td>003</td><td>王五</td><td><input type="button" value="向上" onclick="move_up(this)"/></td></tr><tr><td>004</td><td>赵六</td><td><input type="button" value="向上" onclick="move_up(this)"/></td></tr></table></body><script type="text/javascript">function move_up(el){ //alert(el); var tr=el.parentNode.parentNode; var tbl=tr.parentNode; var trs=tbl.getElementsByTagName("tr"); var cur; for(var i=0;i<trs.length;i++){ if(trs[i]==tr){ alert(i); cur=i; break; } } var newTr = document.createElement("tr"); var newTd = document.createElement("td"); var newText = document.createTextNode("测试") newTr.appendChild(newTd); newTd.appendChild(newText); if(cur)tbl.insertBefore(newTr,trs[cur-1]);}</script>我还有一个问题,如果我把newTr改成了"abc"就会出错说类型不匹配,我想问一下insertBefore函数的2个参数是不是一定要2个同类型的对象。如果向上述例子,我得到了trs[cur-1],它是一个<tr>标签对象,如果我想在它的插入一个如<input type ="buttue" value="点我">这样的其他标签,那代码该怎么写呢?我还想知道如何动态的创建一个text或着butten?是这样写吗?————document.createElement("?????"); 如果我把newTr改成了"abc"就会出错说类型不匹配如果你要换就要都换比如:var abc = document.createElement("tr"); var newTd = document.createElement("td"); var newText = document.createTextNode("测试") abc.appendChild(newTd); newTd.appendChild(newText); if(cur)tbl.insertBefore(abc,trs[cur-1]);红色部分都换叼 创建文本用document.createTextNode创建标签用document.createElement 那很简单! <script language="javascript"> function setid() { str=''; if(!window.myform.no.value) window.myform.no.value=1; for(i=1;i <=window.myform.no.value;i++) str+=''+'名称: <input type="text" name="SiteName'+i+'" style="padding-left:1pt" value="地址'+i+'" size=12> URL: <input type="text" name="DownSite'+i+'" style="padding-left:1pt" size=50 value=""> <BR> '; window.upid.innerHTML=str+' <br> '; } </script> 设置添加的数量: <input type="text" name="no" value="1" size=2> <input type="button" name="Button" class=button onClick="setid();" value="添加"> chinmo你这个我还是运行不出来 window.myform.no.value你没发现我这个写的是表单吗?你换成doucment.getElmentById给<input type="text" name="no" value="1" size=2>加一ID <SCRIPT>function fnMove(){oTable.moveRow(0,1);}</SCRIPT><INPUT TYPE="button" VALUE="Change Rows" onclick="fnMove()"><TABLE ID="oTable"><TR><TD>Cell 1, Row 1</TD></TR><TR><TD>Cell 1, Row 2</TD></TR></TABLE>IE下OK,FF下没测不知道。 7楼的可能没理解我所说的意思,我所说的abc是一个字符串对象,而trs[cur-1]是一个tr对象,我想问的是insertBefore函数能不能接受两个不同类型的参数,比如说在trs[cur-1]前面插入一个butten,是不是非要用<tr><td>标签将它包含在里面 你要存在那标签才行啊创建标签用document.createElement你都不存在的标签你怎么创建? createElement 你先了解这个的意义好吧 <script language="JavaScript" type="text/javascript"><!--//定义通用的函数交换两个结点的位置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);}//--></script> 给楼主一段完整的测试代码<table id="table1"> <tr> <td>000</td> </tr> <tr> <td>111</td> </tr> <tr> <td>222</td> </tr> <tr> <td>333</td> </tr> <tr> <td>444</td> </tr> <tr> <td>555</td> </tr> <tr> <td>666</td> </tr></table><p><input type="button" value="Swap 2<->4" onclick="swap(2, 4)"/></p><script language="JavaScript" type="text/javascript"> function swap(index1, index2){ var table = document.getElementById("table1"); var node1 = table.firstChild.children[index1]; var node2 = table.firstChild.children[index2]; swapNode(node1, node2); } <!--//定义通用的函数交换两个结点的位置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);}//--></script> 【50分】jawr的properties文件要怎么写? ECSHOP的clothing模版中关于"放入购物车"的代码问题! 怎样在单元格中的事件中删除行? ReturnValue返回值错误问题 求一正则 怎么给网页使用map的area标签创建的不规则区域设置颜色??? jsp页中的javascript,高手帮忙~ 高分请教:模式对话框中是不是不能设置iframe的designMode=“on”属性啊? 请教:求近似值的函数 求解:在ios微信中奇葩失效的脚本。 如何判断当前页面是以何种方式打开的? JAVASCRIPT开平方的问题。。。。。
<head>
<title>Untitled Document</title>
</head><body>
<table width="75%" border="1">
<TR id="tr">
<TD> 001 </TD> <TD id="td" name="tdName"> 张三 <input type="button" value="向上"> </TD>
</TR>
<TR id="tr">
<TD> 002 </TD> <TD id="td" name="tdName"> 李四 <input type="button" value="向上"> </TD>
</TR>
</table>
<input type=button value="交换" onclick="test()" >
<script language="JavaScript" type="text/JavaScript">
function test()
{
var sTD = td[0].innerHTML;
td[0].innerHTML = td[1].innerHTML;
td[1].innerHTML = sTD;
}
</script>
</body>
</html>
<body>
<table>
<tr><td>001</td><td>张三</td>
<td><input type="button" value="向上" onclick="move_up(this)"/></td></tr>
<tr><td>002</td><td>李四</td>
<td><input type="button" value="向上" onclick="move_up(this)"/></td></tr>
<tr><td>003</td><td>王五</td>
<td><input type="button" value="向上" onclick="move_up(this)"/></td></tr>
<tr><td>004</td><td>赵六</td>
<td><input type="button" value="向上" onclick="move_up(this)"/></td></tr>
</table>
</body>
<script type="text/javascript">
function move_up(el){
var tr=el.parentNode.parentNode;
var tbl=tr.parentNode;
var trs=tbl.getElementsByTagName("tr");
var cur;
for(var i=0;i<trs.length;i++){
if(trs[i]==tr){
cur=i;
break;
}
}
if(cur)tbl.insertBefore(trs[cur],trs[cur-1]);
}
</script>
这种交换法到底适用范围是什么?
不是tr为什么不行,
是因为你tr里还包含了其他的文本,和代码,不是你想要的东西,而你想要的是接近的那部分!
测试代码如下<td><input type="button" value="向上" onclick="move_up(this)"/></td></tr>
<tr><td>003</td><td>王五</td>
<td><input type="button" value="向上" onclick="move_up(this)"/></td></tr>
<tr><td>004</td><td>赵六</td>
<td><input type="button" value="向上" onclick="move_up(this)"/></td></tr>
</table>
</body>
<script type="text/javascript">
function move_up(el){
//alert(el);
var tr=el.parentNode.parentNode;
var tbl=tr.parentNode;
var trs=tbl.getElementsByTagName("tr");
var cur;
for(var i=0;i<trs.length;i++){
if(trs[i]==tr){
alert(i);
cur=i;
break;
}
}
var newTr = document.createElement("tr");
var newTd = document.createElement("td");
var newText = document.createTextNode("测试")
newTr.appendChild(newTd);
newTd.appendChild(newText); if(cur)tbl.insertBefore(newTr,trs[cur-1]);
}
</script>我还有一个问题,如果我把newTr改成了"abc"就会出错说类型不匹配,我想问一下insertBefore函数的2个参数是不是一定要2个同类型的对象。
如果向上述例子,我得到了trs[cur-1],它是一个<tr>标签对象,如果我想在它的插入一个如<input type ="buttue" value="点我">这样的其他标签,那代码该怎么写呢?我还想知道如何动态的创建一个text或着butten?
是这样写吗?————document.createElement("?????");
var newTd = document.createElement("td");
var newText = document.createTextNode("测试")
abc.appendChild(newTd);
newTd.appendChild(newText); if(cur)tbl.insertBefore(abc,trs[cur-1]);
红色部分都换叼
创建标签用document.createElement
function setid()
{
str='';
if(!window.myform.no.value)
window.myform.no.value=1;
for(i=1;i <=window.myform.no.value;i++)
str+=''+'名称: <input type="text" name="SiteName'+i+'" style="padding-left:1pt" value="地址'+i+'" size=12> URL: <input type="text" name="DownSite'+i+'" style="padding-left:1pt" size=50 value=""> <BR> ';
window.upid.innerHTML=str+' <br> ';
}
</script>
设置添加的数量: <input type="text" name="no" value="1" size=2> <input type="button" name="Button" class=button onClick="setid();" value="添加"> chinmo你这个我还是运行不出来
你没发现我这个写的是表单吗?
你换成doucment.getElmentById
给<input type="text" name="no" value="1" size=2>加一ID
<SCRIPT>
function fnMove(){
oTable.moveRow(0,1);
}
</SCRIPT>
<INPUT TYPE="button" VALUE="Change Rows" onclick="fnMove()">
<TABLE ID="oTable">
<TR><TD>Cell 1, Row 1</TD></TR>
<TR><TD>Cell 1, Row 2</TD></TR>
</TABLE>IE下OK,FF下没测不知道。
创建标签用document.createElement你都不存在的标签你怎么创建?
你先了解这个的意义好吧
<!--
//定义通用的函数交换两个结点的位置
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);
}
//-->
</script>
<tr>
<td>000</td>
</tr>
<tr>
<td>111</td>
</tr>
<tr>
<td>222</td>
</tr>
<tr>
<td>333</td>
</tr>
<tr>
<td>444</td>
</tr>
<tr>
<td>555</td>
</tr>
<tr>
<td>666</td>
</tr>
</table><p><input type="button" value="Swap 2<->4" onclick="swap(2, 4)"/></p>
<script language="JavaScript" type="text/javascript">
function swap(index1, index2){
var table = document.getElementById("table1");
var node1 = table.firstChild.children[index1];
var node2 = table.firstChild.children[index2];
swapNode(node1, node2);
}
<!--
//定义通用的函数交换两个结点的位置
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);
}
//-->
</script>