为什么offsetWidth属性在DOM中的元素数组中为0?

时间:2015-06-24 19:09:34

标签: javascript jquery html dom

我有一个脚本,将一些宽度设置为Dom上的几个元素,这几个元素正在增加:     var elements = document.querySelectorAll("p.caption") 前12个元素是好的,右偏移宽度但另一半的偏移宽度为0。

我认为这可能是因为Dom没有准备好,或者没有完全加载所以可能元素处于不同的状态,该属性为0,但我在onload事件上调用该函数在Dom并且是相同的结果,我寻找检查Dom的元素,我可以看到它但属性仍为0。

我还读到关于offsetWidth得到0但是唯一相关的东西说可能是因为有问题的元素最近在Dom上有变化,而offsetWidth没有更新,但实际上,我没有任何其他功能在此之前,指出了一些Dom的变化。

更新: 显然我读了一点,发现元素显示时offsetWidth为0:none;所以有办法获得隐藏的元素的宽度。

1 个答案:

答案 0 :(得分:0)

根据您的“更新”:

如果您需要获取函数调用时不想显示的元素的宽度,不要将其显示设置为none,而是使用以下内容:

.noshow{
   position:absolute;
   top:-9999px;
   left:-9999px;
}

这将把它们放在视口之外,但是可以让它们被jQuery / javascript访问以进行测量。

相关问题