从动态表中,从主表中保存单独的表

时间:2015-01-17 20:45:02

标签: javascript jquery

假设我有一个动态表,就像这样(只是一个例子):

  var table = '<table>';
  for (var i=0; i<6; i++) {
    table += '<tr>';
    table += '<th>';
    table += 'HEADER ' + i + '</th></tr>'
    table += '<tr><td>one</td>';
    table += '<td>two</td>';
    table += '<td>three</td>';
    table += '<td>four</td>';
    table += '<td>five</td>';
    table += '<td>six</td>';
    table += '<td>seven</td>';
    table += '<td>eight</td>';
    table += '</tr>';
  }
  table += '</table>';

我想要做的是将每个标题及其表数据放在标题下,并将每个标题保存为单独的表。例如,第一个表是:

HEADER 0 
1   2   3   4   5   6   7   8

第二个表格是:

HEADER 1
1   2   3   4   5   6   7   8

等...

注意:不保证每个标题下只有一行。有些可能有多行。

要获得我能做的第一个表:

var indexval = $(table).find('tr:contains("1")').index();

var firstTable = $(table).find('tr:lt('+indexval+')');

$('#testarea').html(firstTable);

我知道我打电话给这些&#34;表&#34;这可能不正确。但是如何从&#34; next&#34;开始标题然后去那个并保存&#39;那个&#39;表?最后,我有一些小桌子,我可以通过调用它们的变量名称来打印到屏幕上。

演示:

&#13;
&#13;
var table = '<table>';
for (var i = 0; i < 6; i++) {
  table += '<tr>';
  table += '<th>';
  table += '<td>HEADER ' + i + '</td></th></tr>'
  table += '<tr><td>one</td>';
  table += '<td>two</td>';
  table += '<td>three</td>';
  table += '<td>four</td>';
  table += '<td>five</td>';
  table += '<td>six</td>';
  table += '<td>seven</td>';
  table += '<td>eight</td>';
  table += '</tr>';
}
table += '</table>';

//$('#testarea').html(table);

var indexval = $(table).find('tr:contains("1")').index();

var firstTable = $(table).find('tr:lt(' + indexval + ')');

$('#testarea').html(firstTable);
&#13;
td, th {
  min-width: 50px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id='testarea'></div>
&#13;
&#13;
&#13;

编辑:我最后通过使用几个数组来存储表的每个部分(每个标题及其下面的直接相关行)来解决我自己的问题。第一个for循环获取标头的索引值,第二个for循环选择表行(标题及其下的相关单元格)。 &#34; firstRow&#34;变量只选择第一个标题及其行,&#39; lastRow&#39;变量与最后一个标题和行相同。抱歉最初没有明确提出问题。问题只是询问如何将一个大表分段成每个标题及其相关行,并将它们保存为单独的变量。我的想法是,这将清理我目前在我的网站上的分页方法。当一个页面向上&#39;或者&#39;页面向下&#39;单击,它只是在页面上的div中加载适当的变量。

var firstRow = "";
var test = [];
var indexVal = [];

for (var i=2; i<7; i++) {
  indexVal[i] = $(table).find('tr:contains('+('MC' + ' ' + i)+')').index();
}   

firstRow =  $(table).find('tr:lt('+indexVal[2]+')');
lastRow = $(table).find('tr:gt('+((indexVal[6]) - 1)+')');

for (var j=1; j<7; j++) {
   test[j] = $(table).find('tr:lt('+indexVal[j + 1]+'):gt('+((indexVal[j]) - 1)+')');  
}    

我遇到的唯一问题是无法将第一行和最后一行集成到for循环中。我不得不让他们分开手动编码变量。但它的确有效。

JSFIDDLE

0 个答案:

没有答案