我试图通过使用它的 id 来获取元素的偏移量,我已经将它存储在一个数组中。代码:
var id_array = new Array;
var offset_array = new Array;
var i = 0;
for(i = 0; i < $(".page-grid-picture").length; i++)
{
id_array.push($(".page-grid-picture")[i].getAttribute("id"));
offset_array.push(id_array[i].offset().top);
}
我已经使用 alert 查看 id_array 中是否存储了正确的值,确实如此。问题是在尝试获取偏移值时,我似乎无法通过使用其索引调用它来使用该值。如果我使用这样的唯一 ID,它会起作用:
offset_array.push($("#unique-id").offset().top);
但当我尝试使用 id_array 时不是...我也尝试过:
offset_array.push(document.getElementById(id_array[i]).offset().top);
那也没用...
有人为我提供解决方案吗?
提前致谢!
最佳答案
您需要在 jQuery 对象上调用 offset()
。它不是字符串或原始 DOM 元素上的方法。
var id_array = [];
var offset_array = [];
var $pageGridPictures = $(".page-grid-picture");
$pageGridPictures.each(function(index, element){
var $this = $(element);
id_array.push(element.id);
offset_array.push($this.offset().top);
});
最初您正在执行以下操作:
id_array.push($(".page-grid-picture")[i].getAttribute("id"));
它所做的是找到所有页面网格图片元素作为 jQuery 对象。然后它获取 [i]
元素,该元素将单个 DOM 元素从 jQuery 对象中分离出来,然后从中获取 id 属性。所以在这种情况下推送到 id_array 的值是一个字符串,而不是一个 jQuery 对象。所以如果你打算这样做,你必须稍后获取 id,再次查找元素,然后对它执行 offset()。
关于javascript - 使用存储在数组中的 id 获取元素偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52410623/