收藏
回答

SelectorQuery NodesRef.xxx返回null?

p.select('#' + e.currentTarget.dataset.pid) 这一步是有数据返回的,但是下一步boundingClientRect回调就返回null了。

网上说搞个setTimeout,但是好像没有效果。

settimeout没有效果

最后一次编辑于  2020-05-09
回答关注问题邀请回答
收藏

7 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2020-05-09

    pid ? Pid ?

    js、wxml大小写问题?



    ==============问题所在===============

    id的问题,id不要以数字开头

    

    ps: setTimeout应该不再需要

    若认为该回答有用,给回答者点个[ 有用 ],让答案帮助更多的人

    2020-05-09
    有用 1
    回复 3
    • 非人哉
      非人哉
      2020-05-09
      不是这个问题。
      2020-05-09
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2020-05-09回复非人哉
      那应该是id的问题了,id不要以数字开头

      若认为该回答有用,给回答者点个[ 有用 ],让答案帮助更多的人

      2020-05-09
      2
      回复
    • 非人哉
      非人哉
      2020-05-09
      真胖!
      2020-05-09
      回复
  • 李*
    李*
    2020-07-17

    如果还是获取不到的话,建议wx.createSelectorQuery().in(this)看看?


    wx.createSelectorQuery().in(this).select('#xxxx').boundingClientRect(rect => {       

    console.log(rect.height)

    }).exec();

    2020-07-17
    有用 9
    回复 6
    • null
      null
      2020-08-18
      管用!
      2020-08-18
      回复
    • L²⁰²¹
      L²⁰²¹
      2020-10-12
      管用!
      2020-10-12
      回复
    • Taylor Swift
      Taylor Swift
      2020-12-10
      管用!
      2020-12-10
      回复
    • eunowo
      eunowo
      2020-12-14
      管用!
      2020-12-14
      回复
    • ×
      ×
      03-30
      管用!
      03-30
      回复
    查看更多(1)
  • Gocc
    Gocc
    01-27

    官方文档有给出说明:

    SelectorQuery SelectorQuery.in(Component component)

    将选择器的选取范围更改为自定义组件 component 内。(初始时,选择器仅选取页面范围的节点,不会选取任何自定义组件中的节点)


    你获取的let p = wx.createSelectorQuery().select("#xxx"); console.log(p), 不出意外属性_component是null吧. 说明你现在的操作不在页面而在组件上.需要in(this)一下

    01-27
    有用
    回复
  • OSI
    OSI
    2020-10-19
    如果你获取的元素节点上有wx:if或者节点的元素有wx:for。如果是wx:for元素是根据循环渲染的。使用节点获取信息需要在你获取数据接口之后完成渲染才不会返回空的。如果是wx:if的话。应该是同样的道理。你要先看你的元素是否比你调用的
        const query = wx.createSelectorQuery().in(this)
        query.select('#the-id').boundingClientRect(function(res){
          res.top // 这个组件内 #the-id 节点的上边界坐标
        }).exec();
    先显示。如果先显示的话就不会为空。否则是为空的。
    这是我的个人看法。不喜勿喷,谢谢。
    


    2020-10-19
    有用
    回复
  • 开心🧐
    开心🧐
    2020-08-14

    小程序这边的问题也太多了吧,啥也获取不到

    2020-08-14
    有用
    回复
  • 天刂
    天刂
    2020-06-05

    var image = this.createSelectorQuery().select(".image").boundingClientRect()

    image.exec(function (res) {

    // res[0].top // #the-id节点的上边界坐标

    // res[1].scrollTop // 显示区域的竖直滚动位置

    console.log("image",res)

    })

    我这里也是 有的是null

    2020-06-05
    有用
    回复 1
    • 非人哉
      非人哉
      2020-06-11
      你这个会不会是有些图片还没有加载出来,方法就执行了?
      2020-06-11
      回复
  • 非人哉
    非人哉
    2020-05-09

    图片的load调用触发这个方法。

    2020-05-09
    有用
    回复 2
    • 婷
      2020-05-14
      在wx:if里面的元素获取不到
      2020-05-14
      回复
    • 非人哉
      非人哉
      2020-05-14回复
      不是啊,是id不能是数字,看楼上那个“有脾气的酸奶”
      2020-05-14
      回复
登录 后发表内容
问题标签