收藏
回答

createSelectorQuery 页面初始化求取dom高度

框架类型 问题类型 操作系统 工具版本
小程序 Bug Windows s

var query = wx.createSelectorQuery();

query.select('.pContent').boundingClientRect()

query.exec((res) => {

console.log(res);

var pContentHeight = res[0].height;

console.log("ready", pContentHeight);

this.setData({

pContentHeight: pContentHeight

});


我想求取初始化这个pContent得高度值

但是上面那段代码我不管放到onShow,onLoad,onReady里面读取值都不准确,只有onReady是时准时不准;

但是我通过事件按钮去调用上面那段代码得话,那么就非常准确

请问是我哪里书写得问题,还是这个接口和生命周期存在BUG




回答关注问题邀请回答
收藏

4 个回答

  • 张鑫
    张鑫
    2018-10-26

    是不是元素的内容是动态的 获取的时候元素内容没有得到 高度没有撑开 如果是这样吧获取元素高度的写在获取内容的回调中应该就可以了

    2018-10-26
    有用 1
    回复
  • 好好好先生
    好好好先生
    2018-11-19

    我也遇到这个问题  没解决 很烦

    2018-11-19
    有用
    回复
  • 2018-11-08

    我也遇到同样的问题,我有一个贴底的按钮块,用的fixed定位,但是在onReady中无法正确的取到该部分的高度,必须要设置一个setTimeout延迟一段时间才可以正确的取到

    2018-11-08
    有用
    回复
  • 卢霄霄
    卢霄霄
    2018-10-26

    是因为你有setData吗?能贴下代码吗?

    2018-10-26
    有用
    回复 5
    • Allen
      Allen
      2018-12-18

      大佬,我有一个滚动的列表,请求到数据后setData,然后query.select('.xxx').boundingClientRect()第一次获取到的元素的位置信息都是0,第二次才能正确获取,请问是啥原因?

      2018-12-18
      回复
    • Allen
      Allen
      2018-12-18回复Allen

      设了延迟也不行

      2018-12-18
      回复
    • 卢霄霄
      卢霄霄
      2018-12-18回复Allen

      能整个代码片段吗?

      2018-12-18
      回复
    • Allen
      Allen
      2018-12-18回复卢霄霄

      我是跨子组件查的节点,但是top,left这些值第一次获取一直是0(第二次获取就正常),dataset设的值都能正常拿到

      2018-12-18
      回复
    • 卢霄霄
      卢霄霄
      2018-12-18回复Allen

      听着没啥思路。。要实实在在跑一跑才行。。你是setTimeout弄个10s都不行吗?

      2018-12-18
      回复
登录 后发表内容