微信小程序-超过一定高度,进行动作

需求

历史搜索界面上超出两行,不存储,不显示

小程序怎么获取元素高度?小程序都没Document对象,怎样操作DOM? 

一开始我就是这样想的,臣妾办不到!

然而现实又啪啪啪的打脸了~ 没有Document对象,小程序人家还是可以获取元素的基本信息的,人家有方法啊!

就是它 wx.createSelectorQuery

 

需求实现

wxml中: 为目标元素绑定一个id

<view class="panel_body" id="rwPanel">
  <view wx:for="{{recentSearch}}" wx:key="{{index}}" class="panel_body_item" >
    {{item}}
  </view>
</view>

 js的函数中:根据id获取元素

// 处理超出的函数
over: function () {
    var that = this;
    var recentSearch = wx.getStorageSync('recentSearch');
    // 设置界面的最近搜索
    this.setData({ recentSearch: recentSearch }, () => {
      // 当setData执行完成后,元素rwPanel被渲染在了界面上后,再去获取元素rwPanel的高度
      var query = wx.createSelectorQuery();
      query.select('#rwPanel').boundingClientRect();
      query.exec(res => {
        if (res[0]) {
          // 元素的高度res[0].height
          if (res[0].height > (160 / app.globalData.px_rpx)) {
            console.log('超出两行', recentSearch)
            // 删除最近搜索数组中的最后一位
            recentSearch.splice(recentSearch.length - 1, 1);
            // 这里使用同步更新缓存,是为了接下来在再次调用本函数时,缓存已更新
            wx.setStorageSync('recentSearch', recentSearch)
            that.setData({ recentSearch: recentSearch },()=>{
              // 再次执行该函数,检查是否还有超出的元素,直到清理完为止
              that.over();
            })
          }
        }
      })
    })
},

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值