微信小程序怎么动态获取view的高度,这个高度不是写死的

图片描述

2.点击每一个高度会撑开,默认一行overflow:hidden,撑开了高度没法动态获取了

阅读 42.5k
5 个回答

小程序没有DOM操作

在小程序中没有DOM操作的方法,所以获取不到相应的DOM节点进行高度设置。

解决方案

  • 1.css方案

<view class="{{isFold ?'flod':'extend' }}" bindtap="flodFn">
    我是一个很长的文字
</view>
.flod{
    //折叠样式
}
.extend{
    //展开样式
}
flodFn:function(){
    this.setData({
       isFold: !this.isFold 
    });
}
  • 2.动态渲染方案

<view bindtap="flodFn">
<view wx:if="{{isFold}}" >
    我是一个很长的文字
</view>
<view wx:else>
    我是一个很长的文字
</view>
</view>
flodFn:function(){
    this.setData({
       isFold: !this.isFold 
    });
}

高级

如果是列表,需要结合复杂数据处理,建议阅读

首先给你的xml对象一个id:

<view class="usermotto" style="height:213px;" id='mjltest'/>

然后在js里,用一个SelectorQuery来选择对应id的节点(注意id前面要加一个#号),就可以获取对应节点的属性,包括高度。

//创建节点选择器
var query = wx.createSelectorQuery();
//选择id
query.select('#mjltest').boundingClientRect()
query.exec(function (res) {
  //res就是 所有标签为mjltest的元素的信息 的数组
  console.log(res);
  //取高度
  console.log(res[0].height);
})

可以看到取到的高度和其他信息。
clipboard.png

楼上已经说了,小程序是不支持DOM和BOM操作的,所有逻辑都需要通过数据驱动。

答谢楼主,学习了

新手上路,请多包涵

怎么在外面获取到query.exec()里面的值啊?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏