从表中选择列并输出其内容没有问题。然而,当从两个或更多个表输出内容时,存在检查位置的值的索引重叠的问题。在下面的示例中,如果选中RESI_COST(上表中的第六列),则会自动选择FP_CAREER,它是下表的第六个索引。如果检查OCCP_GRP_1(下表中的第八个索引),则还会检查第八个索引FP_CAREER。
下面的代码创建了多个表格。
<body>
<c:forEach var="j" begin="0" end="${rData.size()-1}">
<table id="sum_table" border="1">
<thead>
<tr>
<c:forEach var="colName" items="${rData.get(j).colNames}">
<c:forEach var="colNameValue" items="${colName}">
<th><input class="chkCol" name="chkColnames" type="checkbox">
<label class="chkCol" for="chkColnames">${colName}</label></th>
</c:forEach>
</c:forEach>
</tr>
</thead>
<tbody>
<c:forEach var="i" begin="0"
end="${fn:length(rData.get(j).data[0])-1}">
<c:if test="${i le 1000}">
<c:set var="row" value="${rData.get(j).data}" />
<tr>
<c:forEach var="data" items="${row}">
<td>${data[i]}</td>
</c:forEach>
</tr>
</c:if>
</c:forEach>
</tbody>
</table>
</div>
</c:forEach>
</body>
以下代码检索索引值并输出已检查列的信息。
$(document).on('click', '#confirm', function() {
var index = [];
$('#col_table').html('');
$('#sum_table thead tr input[type=checkbox]:checked').each(function() {
index.push($(this).closest('th').index());
});
var thead = $('<thead>');
$('#sum_table thead tr th').each(function() {
if (jQuery.inArray($(this).index(), index) != -1) {
thead.append($('<th>' + $(this).text() + '</th>'));
//console.log($(this).text());
}
});
var tbody = $('<tbody>');
$('#sum_table tbody tr').each(function() {
var tr = $('<tr>');
$(this).find('td').each(function() {
if (jQuery.inArray($(this).index(), index) != -1) {
tr.append($('<td>' + $(this).text() + '</td>'));
//console.log($(this).text());
}
});
tbody.append(tr);
});
$('#col_table').append(thead);
$('#col_table').append(tbody);
});
如果你解决了重叠索引值的问题,我真的很感激。