微信小程序如何获取元素节点信息?

这篇具有很好参考价值的文章主要介绍了微信小程序如何获取元素节点信息?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

通常在做微信小程序的时候我们经常会需要获取元素的信息,但是微信小程序有没有完整的“DOM”操作,无法像浏览器中获取元素。

不过在微信中也有一套自己的“DOM”,那就是NodesRef,它可以让我们像开发浏览器程序一样轻松愉快的获取页面元素

一、NodesRef 节点对象

1.1、NodesRef是什么?

NodesRef 用于获取 WXML 节点信息的对象

1.2、NodesRef具备的方法?

  • NodesRef.fields(Object fields)
    • 获取节点的相关信息
    • 获取节点的相关信息
  • NodesRef.boundingClientRect()
    • 添加节点的布局位置的查询请求
    • 相对于显示区域,以像素为单位
    • 功能类似于 DOM 的 getBoundingClientRect
  • NodesRef.scrollOffset()
    • 添加节点的滚动位置查询请求
    • 以像素为单位
    • 节点必须是 scroll-view 或者 viewport

二、SelectorQuery 查询节点信息的对象

1.1、 创建SelectorQuery查询对象

let query = wx.createSelectorQuery()

1.2、SelectorQuery方法

  • SelectorQuery.in (对应的组件)

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

    • 在当前页面下选择第一个匹配选择器 selector 的节点
  • SelectorQuery.selectAll()

    • 在当前页面下选择匹配选择器 selector 的所有节点。
  • SelectorQuery.selectViewport()

    • 选择显示区域
    • 用于获取显示区域的尺寸、滚动位置等信息
  • SelectorQuery.exec(function callback)

    • 执行所有的请求
    • 请求结果按请求次序构成数组,在callback的第一个参数中返回

三、获取某个元素节点信息

第一步、 创建SelectorQuery查询对象
let query = wx.createSelectorQuery()
第二步、 获取节点对象
  • 方法一:query.select(queryString) 选择第一个匹配节点

  • 方法二:query.selectAll(queryString) 选择所有匹配节点文章来源地址https://www.toymoban.com/news/detail-753718.html

    • queryString 类型
      • ID选择器:#the-id
      • class选择器(可以连续指定多个):.a-class.another-class
      • 子元素选择器:.the-parent > .the-child
      • 后代选择器:.the-ancestor .the-descendant
      • 跨自定义组件的后代选择器:.the-ancestor >>> .the-descendant
      • 多选择器的并集:#a-node, .some-other-nodes
let queryString = '.blue-product>>>.product-list' let queryNode = query.selectAll(queryString)
第三步、调用节点对象方法
  • 获取节点的相关属性
  • developers.weixin.qq.com/miniprogram…https://developers.weixin.qq.com/miniprogram/dev/api/wxml/NodesRef.fields.html
queryNode.fields({
      id:false,//是否返回节点id
      rect:fasle,//是否返回节点布局位置
      dataset: true,//返回数据集
      size: true,//返回宽高
      scrollOffset: true,//返回 scrollLeft,scrollTop
      properties: ['scrollX', 'scrollY'],//监听属性名
      computedStyle: ['margin', 'backgroundColor']//此处返回指定要返回的样式名
    }, function(res) {
      console.log(res)
    })
    
    // 返回结果
    [{
        dataset:{},
        width:247,
        height:1065,
        scrollLeft:0,
        scrollTop:0,
        margin:"0px 0px 10px",
        backgroundColor:"rgba(0, 0, 0, 0)",
    },{
        dataset:{},
        width:247,
        height:1065,
        scrollLeft:0,
        scrollTop:0,
        margin:"0px 0px 10px",
        backgroundColor:"rgba(0, 0, 0, 0)",
    },{
        dataset:{},
        width:247,
        height:1065,
        scrollLeft:0,
        scrollTop:0,
        margin:"0px 0px 10px",
        backgroundColor:"rgba(0, 0, 0, 0)",
    }]
  • 添加节点的布局位置的查询请求
  • developers.weixin.qq.com/miniprogram…https://developers.weixin.qq.com/miniprogram/dev/api/wxml/SelectorQuery.selectAll.html
 query.selectAll(queryClass).boundingClientRect(function(rect){
      rect.id      // 节点的ID
      rect.dataset // 节点的dataset
      rect.left    // 节点的左边界坐标
      rect.right   // 节点的右边界坐标
      rect.top     // 节点的上边界坐标
      rect.bottom  // 节点的下边界坐标
      rect.width   // 节点的宽度
      rect.height  // 节点的高度
 })
  • 添加节点的滚动位置查询请求
  • developers.weixin.qq.com/miniprogram…https://developers.weixin.qq.com/miniprogram/dev/api/wxml/SelectorQuery.selectViewport.html
 wx.createSelectorQuery().selectViewport().scrollOffset(function(res){
      res.id      // 节点的ID
      res.dataset // 节点的dataset
      res.scrollLeft // 节点的水平滚动位置
      res.scrollTop  // 节点的竖直滚动位置
 })
第四步:可一返回所有的节点信息
query.exec(function(res) { console.log(res) })

到了这里,关于微信小程序如何获取元素节点信息?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Uniapp写微信小程序时,如何获取用户头像和昵称使用微信用户信息登录?

    实现效果如下: 首先使用uni.login获取用户登录凭证code: 官方代码: success返回参数如下: 头像选择: 需要将 button 组件  open-type  的值设置为  chooseAvatar ,当用户选择需要使用的头像之后,可以通过  bindchooseavatar  事件回调获取到头像信息的临时路径。 从基础库2.24.4版本

    2024年02月04日
    浏览(47)
  • 关于微信小程序如何调用wx.login获取openId和用户信息

    首先我们需要在微信开发小工具获取code临时登录凭证,下面是js文件也就是一些需要调用的函数。需要做这个的话我们需要上微信公众平台获取AppId和AppSecret 这个是页面 这是获取到的code 本来获取用户信息是getUserInfo但是微信官方已经把那个接口废弃了,只能获取到一些默认

    2024年02月11日
    浏览(53)
  • 解决微信小程序dom的获取问题,动态修改CSS样式

    哥们儿用UNIAPP开发微信小程序的过程中,遇到这么一个组件 这是插件市场中的一个案例,作者使用的进度条是vant的Circle 环形进度条 哥们儿开心的很呀,这东西粘贴一下改改数,一天的工作量不就达成了吗? 但是因为种种原因,我还是太高估自己了,vant引入不进去! 还好哥

    2024年02月05日
    浏览(51)
  • 微信小程序获取节点的位置返回null

    微信小程序获取元素节点时,返回值为null的原因,是因为元素在页面数据渲染前,先调用的微信小程序的方法,此时元素节点还未渲染出来,所以拿不到节点位置,返回null。 解决办法:尽量避免动态生成元素节点,若避免不了,就设置个定时器,在页面加载几秒后再调用该

    2024年02月12日
    浏览(49)
  • html2canvas(将dom元素转为canvas),wxml2canvas(微信小程序)

    某些场景需要通过 canvas 绘制一些图片, 其中包含一些文字、可能的二维码等等。 然后实现时如果完全手动的去定位元素在 canvas 中的位置,结果就会产生大量不能复用和难以维护的代码。( 使用背景图可能会模糊,可以使用img,结合定位 ) 1.安装   也可以直接官网下载js文件

    2024年02月16日
    浏览(53)
  • 微信小程序 获取window或某一节点的宽高

    异步方法: 同步方法: 如果查询节点为自定义组件内容,则要使用 in() 方法 例如查找的节点为当前组件内容: wx.createSelectorQuery().in(this).select(\\\'#container\\\')

    2024年02月15日
    浏览(41)
  • 微信小程序如何及时获取页面循环元素的宽度、高度、距离左边值、函数自调、类似递归、闪屏、selectAll、exec、globalData、map、scroll-view

    distanceLeft :定义一个数组存储各个循环元素距离左边的值。 isPage :控制页面显示与隐藏。 scrollLeft :动态设置滚动距离。 isAactivity :存储 tabBar 对应 id 值。因为从 tabBar 页面跳转到 tabBar 页面时不能在路径上携带参数,所以此参数存储在全局变量中。 在微信小程序中使用

    2024年02月13日
    浏览(55)
  • 微信小程序获取用户信息

    要在微信小程序中获取用户信息,你可以按照以下步骤进行操作: 1. 在小程序的app.json文件中添加\\\"scope.userinfo\\\"权限,例如: ``` \\\"permission\\\": {   \\\"scope.userinfo\\\": {     \\\"desc\\\": \\\"你的个人信息\\\"   } } ``` 2. 在小程序的某个页面中,使用wx.login方法获取用户登录凭证code,例如: ``` wx.log

    2024年02月10日
    浏览(51)
  • 小程序获取窗口宽高和dom元素

    wx.getSystemInfoSync().windowWidth // 获取当前窗口的宽度 wx.getSystemInfoSync().windowHeight // 获取当前窗口的高度 wx.getSystemInfoSync().model // 获取当前采用的设备 wx.getSystemInfoSync().pixelRatio wx.getSystemInfoSync().language // 获取当前所采用的的语言 wx.getSystemInfoSync().version // 获取当前设备的版本 ==

    2024年02月15日
    浏览(46)
  • 微信小程序获取页面节点方法简介。canvas 滑动验证码 (前段,微信小程序,canvas2D)

    目录 一.wx.createSelectorQuery():返回一个 SelectorQuery 对象实例。在自定义组件或包含自定义组件的页面中,应使用 this.createSelectorQuery() 来代替 二.SelectorQuery.select(string selector)  返回值是NodesRef 三.NodesRef  四:执行所有请求 NodesRef SelectorQuery.exec 五: canvas 滑动验证码(使用wx

    2024年02月09日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包