<input   type="button"   value="向上"> 是我加入的一段代码,它不起作用,主要想知道如果标签嵌套了多层要怎么操作,能不能把<td>标签里面的东西当整体

解决方案 »

  1.   

    <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>
      

  2.   

    以下代码可以实现“向上”的功能(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>
      

  3.   

    tr为什么不行? 
    这种交换法到底适用范围是什么?
    不是tr为什么不行,
    是因为你tr里还包含了其他的文本,和代码,不是你想要的东西,而你想要的是接近的那部分!
      

  4.   

    我测试了一下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("?????");
      

  5.   

    如果我把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]);
    红色部分都换叼
      

  6.   

    创建文本用document.createTextNode
    创建标签用document.createElement
      

  7.   

    那很简单! <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> &nbsp;URL: <input   type="text"   name="DownSite'+i+'"   style="padding-left:1pt"   size=50   value=""> <BR> '; 
        window.upid.innerHTML=str+' <br> '; 
        } 
        </script> 
    设置添加的数量:&nbsp; <input   type="text"   name="no"   value="1"   size=2> <input   type="button"   name="Button"   class=button   onClick="setid();"   value="添加"> chinmo你这个我还是运行不出来
      

  8.   

    window.myform.no.value
    你没发现我这个写的是表单吗?
    你换成doucment.getElmentById
    给<input       type="text"       name="no"       value="1"       size=2>加一ID
      

  9.   


    <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下没测不知道。
      

  10.   

    7楼的可能没理解我所说的意思,我所说的abc是一个字符串对象,而trs[cur-1]是一个tr对象,我想问的是insertBefore函数能不能接受两个不同类型的参数,比如说在trs[cur-1]前面插入一个butten,是不是非要用<tr><td>标签将它包含在里面
      

  11.   

    你要存在那标签才行啊
    创建标签用document.createElement你都不存在的标签你怎么创建?
      

  12.   

    createElement 
    你先了解这个的意义好吧
      

  13.   

    <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>
      

  14.   

    给楼主一段完整的测试代码<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>