小程序获取DOM(1)讲解

小程序API:wx.createSelectorQuery()

该方法返回一个查询信息实例对象,在页面生命周期中获取到为null,推荐在自定义组件中使用,在组件的生命周期ready()中获取

const query = wx.createSelectorQuery()

query实例方法,可以获取不同的信息
  • query.select(ele)
    select()方法的参数是一个元素节点,可以使用类选择器或ID选择器,如query.select('#id')
    调用该方法返回一个NodesRef实例对象,const nodeRef = query.select(ele) ,可以用于获取节点信息

  • query.selectAll(eles)
    selectAll()方法同上,获取的是所有选择的节点
    调用该方法返回一个NodesRef实例对象,const nodeRef = query.selectAll(ele) ,可以用于获取节点信息

  • query.selectViewport()
    query.selectViewport(),获取的是视口
    调用该方法返回一个NodesRef实例对象,const nodeRef = query.selectViewport() ,可以用于获取节点信息

调用以上三个方法都会返回一个NodeRef实例对象,通俗地讲就类似一个DOM节点,通过NodesRef实例对象上的2个方法,可以获取不同的信息
  • nodeRef.boundingClientRect()
    boundingClientRect()获取元素的 宽高和 元素上下左右边界的坐标值以及元素id,dataset
    调用该方法后返回的依然是nodeRef实例(类似于promise里的then()返回一个promise)
    那我们怎么获取信息呢?我们再调用query.exec()方法,就是执行了nodeRef.boundingClientRect()的调用
    执行的结果以数组的形式在 exec(res => console.log(res))方法里获取
 // 创建查询信息实例对象 query
const query = wx.createSelectorQuery()      
 // 这段代码的意思是选择id=text的节点,获取节点位置信息的查询请求
query.select('#text').boundingClientRect()  
 //res是一个数组,里面包含了元素的宽高 和 元素上下左右边界的坐标值 以及元素id,dataset
query.exec(res => console.log(res))         
  • scrollOffset()
    scrollOffset()获取元素的 scrollTop、scrollLeft 以及元素id,dataset
    使用方法同上
 // 创建查询信息实例对象 query
const query = wx.createSelectorQuery()      
 //这段代码的意思是选择id=text的节点,获取节点滚动位置的查询请求
query.select('#text').scrollOffset()  
 //res是一个数组,里面包含了元素的滚动位置 以及元素id,dataset      
query.exec(res => console.log(res))         
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。