欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

js操作table中tr的顺序实现上移下移一行的效果

程序员文章站 2022-05-19 14:24:24
总体思路是在table外部加个div,修改div的innerhtml实现改变tr顺序的效果 具体思路是 获取当前要移动tr行的rowindex,在table中删除掉,然...

总体思路是在table外部加个div,修改div的innerhtml实现改变tr顺序的效果

具体思路是

获取当前要移动tr行的rowindex,在table中删除掉,然后循环table的rows,到了目标行再直接加进去,最后把整体的html赋值给div完成效果

js代码如下

 //使行向上一行
    function setrowup(obj) {
      if (obj.parentnode.parentnode.rowindex != 1) {
        var tab = obj.parentnode.parentnode.parentnode;
        var nownodeinnerhtml = obj.parentnode.parentnode.innerhtml;
        var nownowindex = obj.parentnode.parentnode.rowindex;
        tab.deleterow(nownowindex);
        var newhtml = "<table cellpadding=\"5\" cellspacing=\"0\">";
        newhtml += ("<tr style='font-weight: bold; text-align: center;'>" + tab.rows[0].innerhtml + "</tr>");
        for (i = 1; i < tab.rows.length; i++) {
          if (i == (nownowindex - 1)) {
            newhtml += ("<tr>" + nownodeinnerhtml + "</tr>");
          }
          newhtml += ("<tr>" + tab.rows[i].innerhtml + "</tr>");
        }
        newhtml += "</table>";
        document.getelementbyid("divcontent").innerhtml = newhtml;
      }
    }
    //使行向下一行
    function setrowdown(obj) {
      if (obj.parentnode.parentnode.rowindex != (document.getelementbyid("divcontent").childnodes[0].rows.length - 1)) {
        var tab = obj.parentnode.parentnode.parentnode;
        var nownodeinnerhtml = obj.parentnode.parentnode.innerhtml;
        var nownowindex = obj.parentnode.parentnode.rowindex;
        tab.deleterow(nownowindex);
        var newhtml = "<table cellpadding=\"5\" cellspacing=\"0\">";
        newhtml += ("<tr style='font-weight: bold; text-align: center;'>" + tab.rows[0].innerhtml + "</tr>");
        for (i = 1; i < tab.rows.length; i++) {
          if (i == (nownowindex + 1)) {
            newhtml += ("<tr>" + nownodeinnerhtml + "</tr>");
          }
          newhtml += ("<tr>" + tab.rows[i].innerhtml + "</tr>");
        }
        //向下可能到表格现有行数外 额外处理
        if (tab.rows.length == (nownowindex + 1)) {
          newhtml += ("<tr>" + nownodeinnerhtml + "</tr>");
        }
        newhtml += "</table>";
        document.getelementbyid("divcontent").innerhtml = newhtml;
      }
    }

测试html代码如下

<body>
  <div id="divcontent">
    <table cellpadding="5" cellspacing="0">
      <tr style='font-weight: bold; text-align: center;'><td>工号</td><td>姓名</td></tr>
      <tr><td>0001
        <input type="button" value="↑" onclick="setrowup(this)" />
        <input type="button" value="↓" onclick="setrowdown(this)" />
        </td><td>姓名01</td></tr>
      <tr><td>0002
        <input type="button" value="↑" onclick="setrowup(this)" />
        <input type="button" value="↓" onclick="setrowdown(this)" />
        </td><td>姓名02</td></tr>
      <tr><td>0003
        <input type="button" value="↑" onclick="setrowup(this)" />
        <input type="button" value="↓" onclick="setrowdown(this)" />
        </td><td>姓名03</td></tr>
      <tr><td>0004
        <input type="button" value="↑" onclick="setrowup(this)" />
        <input type="button" value="↓" onclick="setrowdown(this)" />
        </td><td>姓名04</td></tr>
      <tr><td>0005
        <input type="button" value="↑" onclick="setrowup(this)" />
        <input type="button" value="↓" onclick="setrowdown(this)" />
        </td><td>姓名05</td></tr>
    </table>
  </div>
</body>

总结

以上所述是小编给大家介绍的js操作table中tr的顺序实现上移下移一行的效果,希望对大家有所帮助