0

我有一个用 jQuery 动态创建的表,它有很多列。我不知道表格中会出现什么,或者会有多少列。根据 td 内部的内容,每个 td 将具有不同的宽度。我想要做的是获取 td 的宽度并在以后使用它。

这就是我的桌子的样子。http://imgur.com/80Zj7wB

如您所见,它具有不同大小的列。所以我只想去获取每个元素的宽度。这是我的代码:

var topTds = $("#ResultSetTable tr:first");
topTds = topTds.children();
console.log(topTds);
//for each of the tds we want to go and get their scrollwidth
for(var m = 0; m < topTds.length; m++){
    console.log(topTds[m], "client: ", topTds[m].clientWidth, "offset ", topTds[m].offsetWidth, "scroll ", topTds[m].scrollWidth);
}

正如你所看到的,我已经尝试了所有我能想到的不同宽度的东西,但它们并没有打印出正确的数字。这是我得到http://imgur.com/ZavrE6r的结果

但是,当我使用 chrome 滚动时,我会得到不同的数字,并且 chrome 数字是正确的。这是 chrome 显示的内容http://imgur.com/jO7TRr6

所以基本上我不知道我做错了什么。任何帮助将非常感激!

4

1 回答 1

1

当您使用 jQuery 时,您可以利用提供的width()方法。

for(var m = 0; m < topTds.length; m++) {
    console.log(topTds[m], "jQuery width: ", topTds.eq(m).width());
}

clientWidth,offsetWidthscrollWidth表示不同的数量,并且由于 CSS 属性和盒子模型,计算 HTML 元素的最终宽度可能非常棘手。此外,您应该检查何时console.log调用,是否加载了所有 CSS 和 JavaScript,以及表中是否填充了数据:这些可能是您获得奇怪值的原因。

以我的经验,jQuerywidth()在计算对象的实际宽度方面从未失败过。

一些参考:

于 2013-10-06T01:56:42.340 回答