根据行的内容将一个表拆分为多个表

时间:2016-08-01 06:01:39

标签: javascript jquery html html-table

是否可以根据单元格的内容创建N个表,例如我有下表:

  <table>
    <tr>
      <td>Row 1 Colum 1</td>
      <td>Row 1 Colum 2</td> 
      <td>Row 1 Colum 3</td>
      <td>1</td>
    </tr>
    <tr>
      <td>Row 2 Colum 1</td>
      <td>Row 2 Colum 2</td> 
      <td>Row 2 Colum 3</td>
      <td>2</td>
    </tr>
    <tr>
      <td>Row 3 Colum 1</td>
      <td>Row 3 Colum 2</td> 
      <td>Row 3 Colum 3</td>
      <td>2</td>
    </tr>
  </table>

第四列有1和2个值,基于此,我想创建2个表,每个不同的数字一个,在本例中为1和2,

结果:

表1

  <table>
  <thead>
    <tr>
      <th>Column 1</th>
      <th>Column 2</th>
      <th>Column 3</th>
      <th>Column 4</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Row 1 Colum 1</td>
      <td>Row 1 Colum 2</td> 
      <td>Row 1 Colum 3</td>
      <td>1</td>
    </tr>
  </tbody>
  </table>

表2

  <table>
  <thead>
    <tr>
      <th>Column 1</th>
      <th>Column 2</th>
      <th>Column 3</th>
      <th>Column 4</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Row 2 Colum 1</td>
      <td>Row 2 Colum 2</td> 
      <td>Row 2 Colum 3</td>
      <td>2</td>
    </tr>
    <tr>
      <td>Row 3 Colum 1</td>
      <td>Row 3 Colum 2</td> 
      <td>Row 3 Colum 3</td>
      <td>2</td>
    </tr>
  </tbody>
  </table>

EDIT。

从CSV中提取数据,我正在使用jquery-csv来创建表格。 此CSV有200列,其中包含有关来自不同员工的交易的信息,每行显示交易明细,例如,员工1有3个交易,其中2个交易具有相同的ID,另一个具有不同的ID:

idEmployee|Transaction|idTransaction|..|..|..|
    1     |Buy X thing|      001    |..|..|..|
    1     |Buy Y thing|      001    |..|..|..|
    1     |Buy Z thing|      002    |..|..|..|

这个表可以有多个具有多个事务id的员工,我想要的是为每个事务编号创建一个表,例如,最后一个表的结果将是每个事务id的2个表:

TABLE1

idEmployee|Transaction|idTransaction|..|..|..|
    1     |Buy X thing|      001    |..|..|..|
    1     |Buy Y thing|      001    |..|..|..|

TABLE2

idEmployee|Transaction|idTransaction|..|..|..|
    1     |Buy Z thing|      002    |..|..|..|

到目前为止,我在代码中的基础是根据行数将表拆分为两个:

var rows = $("table").find ("tr").slice(3);
var $tableCopy = $("content").append("<table id='tableCopy'><tbody></tbody></table>");
$tableCopy.find("tbody").append(rows);
$("table").find ("tr").slice(3).remove();

有问题的项目是这样的:用户有一个包含大量员工数据的CSV,他想根据CSV信息进行报告打印,所以他在页面上输入CSV,然后选择要在报告中显示的列,系统会创建多个报告,其中只包含用户选择的列,并且由于CSV具有多个员工的信息,因此系统会创建多个报告。此外,用户可以进行报告的布局,但这是另一天哈哈。

编辑2: 我创建了一些基于id报告数量创建多个表的代码,首先我创建一个包含id报告总数的数组:

  $scope.getReportsID = function(){
    $scope.reportsID = [];
    //Loop through the array data that contains the table
    for(var row in $scope.data){
    //Loop through the specific cell
      for(var item in $scope.data[row]){
        //The reportID is on cell 19, if that id exist on the array 
        //break the loop but if doesn't exist, check if the data is not 
        //an empty string, if not, push the data on the array
        if((jQuery.inArray( $scope.data[row][19], $scope.reportsID )) !== -1)
          break;
        if($scope.data[row][19] !== "")
          $scope.reportsID.push($scope.data[row][19]);
      }
    }
    //We call createTables function
    $scope.createTables();
  }

然后根据reportsID的数量

计算表的数量

CREATE TABLES功能

  $scope.createTables = function() {
    //Loop through the array that contains the diferent reporst id's
    for(var i in $scope.reportsID){
      //Loop through the array data that contains the table
      for(var row in $scope.data){
         //If data on the cell 19 of the current row equals the current 
         //element of the reportsID array,break the loop and create a table
        if( $scope.data[row][19] === $scope.reportsID[i])
          break;
      }
      $('#hereTables').append('<table id=table' + i + '><tbody></tbody>' + '</table>');
    }
  }

到目前为止,这段代码工作并创建了相当于不同id数量的表的数量,现在我只需填写它,我还不知道,但我正在研究它哈哈

1 个答案:

答案 0 :(得分:0)

据我所知,你想把一张大表分成两个小表...例如:如果你在一个表中有50个条目,你想要制作25个条目中的两个表... 这样做将条件应用于循环。 例如:

for (i = 0; i < (YourArray.length)/2; i++) { 
 for (j = 0; j < YourLimitOfeachTable; j++) { 

   }    
}