【问题标题】:width() returning `null` on a DOM objectwidth() 在 DOM 对象上返回 `null`
【发布时间】:2011-09-18 15:49:52
【问题描述】:

我有以下对象

<div class='app_advert'><a href="/apps">GET THE APPS</a></div>

我将其称为 x 我试图自动定位在另一个元素 (y) 上方,我想将对象的中间对齐,所以我的理论是这样的:

x_width = $(x).width();
y_width = $(y).width();
y_position = $(y).offset().left;

x_horizontal_position =  y_position+(y_width/2)-(x_width/2)

我正在尝试使用以下方法获取 x 的宽度:

jQuery(window).load(function(){
    object_width = jQuery('.apps_advert').width();
    console.log(object_width);
});

但它正在返回null

我还应用了以下 CSS,以防这可能会影响事情:

    div.app_advert{
    position: absolute;
    display: none;

    font-size: 17pt;
    top: 0;

}
div.app_advert a{
    color: white;
    text-decoration: none;
}

【问题讨论】:

  • 您正在检查 app_advert 与 app_advert。同样检查一个类也不会返回一个元素。需要设置 id=app_advert 并勾选#app_advert。
  • console.log(jQuery('.apps_advert').length) 带给你什么?

标签: javascript jquery dom layout width


【解决方案1】:

你的班级是app_advert,但你的jQuery代码试图找到apps_advert注意appapps的复数形式

所以试试

object_width = jQuery('.app_advert').width();

【讨论】:

    【解决方案2】:

    如果它的display: none 没有宽度。 (如果null0 是我不知道的正确值。)

    编辑:正如其他人注意到的那样,您在代码“apps”与“app”中有拼写错误,在这种情况下,应为 null。但是如果使用 display: none 隐藏元素,宽度应该是 0。

    【讨论】:

    • 没有投反对票,只是为了澄清一下,宽度不为空
    • 不,我希望它为 0(整数零),但我对 jquery 不太熟悉(可能由于某种原因重新定义了它),如果IE 返回 null 或 -9025394 或类似 display:none 元素。
    【解决方案3】:

    改一下

    object_width = jQuery('.apps_advert').width(); 
    

    到这里

    object_width = jQuery('.app_advert').width(); 
    

    你的 div 有 app_advert 类,但在你的代码中你写了 apps_advert,而这个类不存在。 这就是您获得 null

    的原因

    【讨论】:

      猜你喜欢
      • 2017-10-15
      • 2021-04-09
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      • 2015-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多