onReady() { let view = uni.createSelectorQuery().select(".homedata"); view.boundingClientRect(data => { console.log(data); // this.clentHeight = data.height; }).exec(); },为什么data为null
时间: 2024-04-15 22:30:35 浏览: 85
在你提供的代码中,可以看到你使用了 `uni.createSelectorQuery()` 方法来创建一个选择器查询实例,并使用 `select()` 方法选择了一个类名为 "homedata" 的元素。
根据你的描述,当执行 `boundingClientRect()` 方法时,`data` 参数返回了 null。这可能是因为选择器查询实例还没有执行 `exec()` 方法来触发查询操作。
`uni.createSelectorQuery()` 方法返回的是一个选择器查询实例,你需要调用 `exec()` 方法来执行查询操作并获取结果。在你的代码中,你需要将 `.exec()` 方法链式调用到 `select()` 方法之后,如下所示:
```javascript
onReady() {
uni.createSelectorQuery().select(".homedata").boundingClientRect(data => {
console.log(data);
// this.clentHeight = data.height;
}).exec();
}
```
确保在调用 `boundingClientRect()` 方法之前,先调用了 `exec()` 方法来触发查询操作。这样应该能够正确获取到元素的 boundingClientRect 数据。如果仍然返回 null,请检查选择器是否正确,元素是否已加载和渲染完成。
相关问题
onReady() { let that = this; wx.createSelectorQuery().select('.indexBar-box').boundingClientRect(function (res) { that.setData({ boxTop: res.top }) }).exec(); wx.createSelectorQuery().select('.indexes').boundingClientRect(function (res) { that.setData({ barTop: res.top })代码解释
这是一个小程序的 onReady 生命周期函数中的代码。该函数在页面初次渲染完成时执行。这段代码的作用是获取某些元素的位置信息。
具体来说,使用 wx.createSelectorQuery() 方法创建一个选择器对象,然后调用 select() 方法来选择指定类名为 ".indexBar-box" 和 ".indexes" 的元素,再调用 boundingClientRect() 方法来获取它们的位置信息并存储在 res 对象中。最后,将获取到的位置信息赋值给该页面对应的数据变量 boxTop 和 barTop。
这样做的目的通常是为了在页面中实现某些特殊的交互效果或布局样式。
在onload或在onready获取uniapp 获取元素高度uni.createSelectorQuery().in(this).select('#newsRows').boundingClientRect((rect) => {一直返回null
可能是因为您的元素还没有完全加载完毕,导致在 `onload` 或 `onReady` 时获取高度时返回 null。您可以尝试在组件的 `mounted` 生命周期函数中获取元素的高度,因为在这个生命周期函数中,组件内的所有元素已经加载完毕。具体实现方法如下:
```js
mounted() {
uni.createSelectorQuery().in(this).select('#newsRows').boundingClientRect((rect) => {
console.log('元素的高度:', rect.height)
}).exec()
}
```
另外需要注意的是,在使用 `uni.createSelectorQuery()` 方法时,需要在方法后面添加 `.exec()` 才会真正执行查询操作。
阅读全文