Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中删除表中的单元格并对其重新排序_Javascript_Prototypejs - Fatal编程技术网

如何在JavaScript中删除表中的单元格并对其重新排序

如何在JavaScript中删除表中的单元格并对其重新排序,javascript,prototypejs,Javascript,Prototypejs,关于如何在JavaScript/Prototype中删除空单元格并将包含数据的单元格放在表的顶部的问题,基本上所有包含数据的单元格都位于表的顶部,然后应删除空单元格 <table> <tr class="row"> <td class="c1">Cell1</td> <td class="c2">Cell2</td> </tr> <tr class="

关于如何在JavaScript/Prototype中删除空单元格并将包含数据的单元格放在表的顶部的问题,基本上所有包含数据的单元格都位于表的顶部,然后应删除空单元格

<table>
    <tr class="row">
        <td class="c1">Cell1</td>
        <td class="c2">Cell2</td>
    </tr>
    <tr class="row">
        <td class="c1">Cell1</td>
        <td class="c2"></td>
        <td class="c3">Cell3</td>
    </tr>
    <tr class="row">
        <td class="c1">Cell1</td>
        <td class="c2">Cell2</td>
        <td class="c3"></td>
    </tr>
</table>


Cell1   Cell2                    Cell1  Cell2   Cell3
Cell1           Cell3     --->   Cell1  Cell2
Cell1   Cell2                    Cell1

第1单元
细胞2
第1单元
第三单元
第1单元
细胞2
细胞1细胞2细胞1细胞2细胞3
Cell1 Cell3--->Cell1 Cell2
第1单元第2单元第1单元
谢谢

window.onload=function(){
var tds=document.getElementsByTagName(“td”);

对于(var i=0;i,最后需要对算法进行编码

我只是简单地使用了DOM功能,因为我对jQuery或其他框架不太熟悉,但我认为您可以理解算法的思想,转换它应该不会太难

<html>
<head>
<script type="text/javascript">
function init() {
  var table = document.getElementsByTagName("table")[0];
  var trs = table.getElementsByTagName("tr");
  var data = [];
  var rows, columns;

  // run through all TRs and TDs and collect the data into an array without
  // empty slots
  for (var r = 0; r < trs.length; r++) {
    var tds = trs[r].getElementsByTagName("td");

    for (var d = 0; d < tds.length; d++) {
      if (tds[d].innerHTML) {
        data[d] = (data[d] || []).concat(tds[d].innerHTML);
      }
    }
  }

  // the tricky thing now is to convert the X/Y alignment of the
  // elements in data into a Y/X one for the table

  columns = data.length;        // target table will have this many columns
  rows = data[0].length;        // target table will have this many rows

  table = document.createElement("table");

  for (var r = 0; r < rows; r++) {
    var tr = document.createElement("tr");

    for (var c = 0; c < columns; c++) {
      var td = document.createElement("td");

      td.innerHTML = data[c][r] || "";
      tr.appendChild(td);
    }

    table.appendChild(tr);
  }
  document.body.appendChild(table);
}
</script>
</head>
<body onload="init()">
<table>
    <tr class="row">
        <td class="c1">Cell1</td>
        <td class="c2">Cell2</td>
    </tr>
    <tr class="row">
        <td class="c1">Cell1</td>
        <td class="c2"></td>
        <td class="c3">Cell3</td>
    </tr>
    <tr class="row">
        <td class="c1">Cell1</td>
        <td class="c2">Cell2</td>
        <td class="c3"></td>
    </tr>
</table>
</body>
</html>

函数init(){
var table=document.getElementsByTagName(“表”)[0];
var trs=table.getElementsByTagName(“tr”);
var数据=[];
var行、列;
//运行所有TR和TDs并将数据收集到阵列中,无需
//空位
对于(var r=0;r

输出与您的请求相匹配。

那么,到目前为止您尝试了什么?请向我们展示该代码。
<html>
<head>
<script type="text/javascript">
function init() {
  var table = document.getElementsByTagName("table")[0];
  var trs = table.getElementsByTagName("tr");
  var data = [];
  var rows, columns;

  // run through all TRs and TDs and collect the data into an array without
  // empty slots
  for (var r = 0; r < trs.length; r++) {
    var tds = trs[r].getElementsByTagName("td");

    for (var d = 0; d < tds.length; d++) {
      if (tds[d].innerHTML) {
        data[d] = (data[d] || []).concat(tds[d].innerHTML);
      }
    }
  }

  // the tricky thing now is to convert the X/Y alignment of the
  // elements in data into a Y/X one for the table

  columns = data.length;        // target table will have this many columns
  rows = data[0].length;        // target table will have this many rows

  table = document.createElement("table");

  for (var r = 0; r < rows; r++) {
    var tr = document.createElement("tr");

    for (var c = 0; c < columns; c++) {
      var td = document.createElement("td");

      td.innerHTML = data[c][r] || "";
      tr.appendChild(td);
    }

    table.appendChild(tr);
  }
  document.body.appendChild(table);
}
</script>
</head>
<body onload="init()">
<table>
    <tr class="row">
        <td class="c1">Cell1</td>
        <td class="c2">Cell2</td>
    </tr>
    <tr class="row">
        <td class="c1">Cell1</td>
        <td class="c2"></td>
        <td class="c3">Cell3</td>
    </tr>
    <tr class="row">
        <td class="c1">Cell1</td>
        <td class="c2">Cell2</td>
        <td class="c3"></td>
    </tr>
</table>
</body>
</html>