uniapp获取页面DOM元素uni.createSelectorQuery()

3,692 阅读1分钟

项目场景:需要获取页面中货位元素的位置信息

问题描述:在uniapp中使用getElementById获取DOM节点,在内置浏览器中没问题,但是运行到真机就会报错,无document对象。

解决办法:使用 uni.createSelectorQuery(),此方法会返回一个 SelectorQuery 对象实例。可以在这个实例上使用 select 等方法选择节点,并使用 boundingClientRect 等方法选择需要查询的信息。

注意uni.createSelectorQuery()需要在生命周期mounted后调用

let view=uni.createSelectorQuery().select('#XXX');
view.boundingClientRect(data=>{
    console.log(data.left)
    console.log(data.top)
}).exec();

selectorQuery.select(selector)

在当前页面下选择第一个匹配选择器 selector 的节点,返回一个 NodesRef 对象实例,可以用于获取节点信息。

selectorQuery.selectAll(selector)

在当前页面下选择匹配选择器 selector 的所有节点,返回一个 NodesRef 对象实例,可以用于获取节点信息。

selectorQuery.selectViewport()

选择显示区域,可用于获取显示区域的尺寸、滚动位置等信息,返回一个 NodesRef 对象实例。

selectorQuery.exec(callback)

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