为了确定页面上各个位置的页边距,我需要得到每个DOM元素的偏移量,宽度和高度。
我以递归方式遍历DOM元素并保存每个元素的属性。
我尝试使用JQuery $(el).offset()
,但速度非常慢。我想使用$(...)
为每个元素创建一个JQuery对象非常慢。
然后,我尝试了一个旧的实现,我从使用原生JS的旧代码中获得了它,它的速度提高了X4倍。
所以我真正想问的是,有不同的方法来实现这一目标吗? 我应该提一下,我的脚本在发布者的网站上运行,我对我正在运行的页面一无所知。
答案 0 :(得分:0)
我想这是一个解决方案,使用map()
和getBoundingClientRect()
:
var elements = document.getElementsByClassName('someclass');
elements.map(function(val, i, arr) {
var doc = document.getBoundingClientRect(),
el = val.getBoundingClientRect(),
coordsX = el.left - doc.left,
coordsY = el.top - doc.top;
return {x: coordsX, y: coordsY};
});
这将返回给定类的所有坐标的数组。如果document.getElementsByClassName
更符合您的需求,您可以将querySelector
更改为getBoundingClientRect()
。
这也会将var MySchema= new mongoose.Schema({
name: {type:String, required: true}
isClever: { type: Boolean, default: false }
});
更改为相对于文档而不是视口。