js获取table中的td宽度并赋值到另一个table的td中,实现宽度对齐

如题:js获取table中的td宽度并赋值到另一个table的td中,实现宽度上下对齐
<table id="top">
<tr>
<td>我是第一个---速度</td>
<td>我是第二个-3</td>
<td>我是第三个-是生生</td>
</tr>
</table>
<table id="buttom">
<tr>
<td>我要跟top的第一个宽相等21</td>
<td>我要跟top的第二个宽相等</td>
<td>我要跟top的第三个宽相等---淡淡的</td>
</tr>
<tr>
<td>我要跟top的第一个宽相等21</td>
<td>我要跟top的第二个宽相等</td>
<td>我要跟top的第三个宽相等---淡淡的</td>
</tr>
</table>
这个怎么实现,我知道如果2个table宽度一样的话可以
function fixDiv()
{
var objLeft = document.getElementById('top);
var objRight = document.getElementById('buttom');
if (objLeft.offsetWidth != objRight.offsetWidth){
objRight.style.width = objLeft.offsetWidth + 'px';
}else{
objLeft.style.width = objRight.offsetWidth + 'px';
}
}
这样实现,但是要控制table里面的td怎么控制呢,并且td的数量是不定的也可能是1个,可能是2个,也可能是几十个,但是不管怎样,top很buttom的td数目都是一样的,
注:如果能完成的话我会追加分,这里只是不想系统吃了分,呵呵

给你说下思路,
document.getElementById("top").rows.length可以获得top表的行数
document.getElementById("top").rows[0].cells.length可以获得top表的第一行的列数
document.getElementById("top").rows[0].cells[0].offsetWidth可获得top表第一行第一列的实际宽度,(注意,这个是只读的!)

所以
for(var i=0;i<document.getElementById("top").rows[0].cells.length;i++)
{
document.getElementById("buttom").rows[0].cells[i].width=document.getElementById("top").rows[0].cells[i].offsetWidth;
}
希望对你有帮助!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-04-11

document.getElementById("top").rows.length可以获得top表的行数。

document.getElementById("top").rows[0].cells.length可以获得top表的第一行的列数。

document.getElementById("top").rows[0].cells[0].offsetWidth可获得top表第一行第一列的实际宽度,(注意,这个是只读的!)

所以
for(var i=0;i<document.getElementById("top").rows[0].cells.length;i++)
{
document.getElementById("buttom").rows[0].cells[i].width=document.getElementById("top").rows[0].cells[i].offsetWidth;
}

本回答被网友采纳
第2个回答  2010-12-03
你可以参考这里的设置td宽度

接下来就要设置td宽度了,要获取某元素的宽度可以通过以下方法:
1,支持defaultView的可以直接用getComputedStyle获取width。
2,获取offsetWidth,再减去border和padding的宽度。
这个本来也可以,但td的border宽度的获取比较麻烦,下面有更方便的方法。
3,获取clientWidth,再减去padding的宽度。
这个跟方法2差不多,但更简单方便。

参考资料:http://www.blueidea.com/common/shoutbox/redir.asp?2=n&id=10778