87,907
社区成员
发帖
与我相关
我的任务
分享
<table width="200" border="1">
<tr>
<td colspan="3">1</td>
<td rowspan="3">2</td>
<td rowspan="3">3</td>
</tr>
<tr>
<td rowspan="2">4</td>
<td colspan="2">5</td>
</tr>
<tr>
<td>6</td>
<td>7</td>
</tr>
</table>
请教,这样的表格,甚至更复杂一些的表格,怎么才能知道4、6、7、2、3分别在第1、2、3、4、5列呢?
<table width="200" border="1" id="table1">
<tr>
<td colspan="3">1</td>
<td rowspan="3">2</td>
<td rowspan="3">3</td>
</tr>
<tr>
<td rowspan="2">4</td>
<td colspan="2">5</td>
</tr>
<tr>
<td>6</td>
<td>7</td>
</tr>
<tr>
<td>8</td>
<td colspan="3">9</td>
<td>10</td>
</tr>
</table>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.2/jquery.js"></script>
<script>
$(function(){
let $table = $("#table1").clone()
let $oldTds = $("#table1").find("td")
let $tds = $table.find("td")
$tds.css({border:"0 none",padding:0,margin:0})
$table.css({width:"30030px",border:"0 none",borderCollapse:"collapse"})
$table.appendTo('body')
let unit = Infinity
$tds.each((i,td) => {unit = Math.min(unit,$(td).width())})
let fstLeft = 0
$tds.each((i,td) => {
if(i === 0){fstLeft = $(td).offset().left}
var index = Math.round(($(td).offset().left - fstLeft)/unit)
if($oldTds.eq(i).attr("colspan") > 1) return
$oldTds.eq(i).attr("data-i", index + 1);
})
$table.remove()
})
</script>
$(document).ready(function () {
var youbiao = 0;
var tr2youbiao = 0;
$("tr:first td").each(function (i) {
if ($(this).attr("colspan") > 1) {
for (var j = 0; j < $(this).attr("colspan"); j++) {
$("tr:last td").eq(tr2youbiao++).attr("data-i", i + youbiao++);
};
youbiao--;
} else {
$(this).attr("data-i", i + youbiao);
};
});
});
<table width="200" border="1">
<tr>
<td rowspan="2">1</td>
<td rowspan="2">2</td>
<td colspan="3">h1</td>
<td rowspan="2">6</td>
<td colspan="2">h2</td>
<td rowspan="2">9</td>
<td rowspan="2">10</td>
</tr>
<tr>
<td>3</td>
<td>4</td>
<td>5</td>
<td>7</td>
<td>8</td>
</tr>
</table>
$(document).ready(function () {
var i = 0;
var youbiao = 0;
$("tr:first td").each(function () {
if ($(this).attr("colspan") > 1) {
for (var j = 0; j < $(this).attr("colspan"); j++) {
$("tr:last td").eq(youbiao).attr("data-i", i + youbiao++);
};
i--;
} else {
$(this).attr("data-i", i + youbiao);
};
i++;
});
});
改进一下