首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在afterRender()中获取div的高度

在afterRender()中获取div的高度
EN

Stack Overflow用户
提问于 2018-06-28 07:04:43
回答 1查看 1.4K关注 0票数 0

我有一个afterRender函数,它有一个事件侦听器,当用户向下滚动页面时,它会将固定的类添加到元素中。将元素固定到页面上会创建一个间隙,使所有后续元素看起来像是“跳起来”。我的想法是创建一个空的div,它将具有固定div的高度,并在scroll事件发生时取而代之,以便删除“跳转”。

我的问题是,当我在事件执行时在控制台中检查chpCard组件(请参阅'chpTarget‘变量)时,元素似乎呈现为没有宽度/高度。我已经检查了它的offsetHeight和它的reders到0。但是,一旦Lightning完成,当我再次检查它时,我得到了具有正确值的offsetHeight。所以我的问题是:我应该如何获得高度?afterRender不是意味着DOM中的一切都已准备就绪可以使用了吗?为什么它呈现为0 height元素?

这是CMP:

代码语言:javascript
复制
<lightning:card class="slds-page-header slds-page-header_object-home" aura:id="chpCard">
    <p>Lorem Ipsum</p>
    <p>Lorem Ipsum</p>
    <p>Lorem Ipsum</p>
</lightning:card>

这是render方法

代码语言:javascript
复制
afterRender: function(component, helper) {
    this.superAfterRender();

    window.addEventListener('scroll', function (event) {
        var chpTarget = component.find('chpCard');
        var wrapper = component.find('chpWrapper');

        if (event.srcElement.documentElement.scrollTop > 12) {
            $A.util.addClass(chpTarget, 'slds-is-fixed');
        } else {
            $A.util.removeClass(chpTarget, 'slds-is-fixed');
        }
    });
}

我希望在这些元素的真值存在的地方,闪电会生成某种虚拟的DOM,但我不会屏住呼吸。:S

EN

回答 1

Stack Overflow用户

发布于 2018-06-28 07:16:37

我想通了。您需要获取具体的组件,并深入研究以获得值。

代码语言:javascript
复制
component.getConcreteComponent().getElements()

将返回基本div。还有一个用于获取特定元素的getElement()方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51072576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档