假设我有一个动态表,就像这样(只是一个例子):
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;表?最后,我有一些小桌子,我可以通过调用它们的变量名称来打印到屏幕上。
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;
编辑:我最后通过使用几个数组来存储表的每个部分(每个标题及其下面的直接相关行)来解决我自己的问题。第一个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循环中。我不得不让他们分开手动编码变量。但它的确有效。