首页 文章

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

提问于
浏览
-1

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

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

我还读到了offsetWidth得到0但是唯一与之相关的事情就是因为有问题的元素最近在Dom上发生了变化,并且offsetWidth没有更新,但事实上,我之前没有任何其他功能指出一些Dom的变化 .

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

1 回答

  • 0

    Per your 'Update':

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

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

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

相关问题