首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数组中div距窗口顶部的距离

数组中div距窗口顶部的距离
EN

Stack Overflow用户
提问于 2018-03-29 14:14:25
回答 3查看 48关注 0票数 0

我正在尝试从窗口顶部获取数组中div的距离,但收到的错误是"player.offset不是一个函数“。我哪里出错了,任何帮助都将不胜感激。

代码语言:javascript
运行
复制
const players = Array.from(document.querySelectorAll('.js-player'));
        
$(window).on('scroll', function () {
    let scrollTop     = $(window).scrollTop();
    console.log(scrollTop)
    players.forEach(function(player) {
        let playerOffset = player.offset().top,
            distance      = (playerOffset - scrollTop);
        console.log(playerOffset, distance)
    })
});
代码语言:javascript
运行
复制
.js-player {
  height: 100px;
  width: 100px;
  margin: 100px;
  background-color: red
}
代码语言:javascript
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="js-player"></div>
<div class="js-player"></div>
<div class="js-player"></div>

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-03-29 14:25:37

.offset()是jQuery函数,参见http://api.jquery.com/offset/

您应该将player变量封装到jQuery中,然后调用.offset().top,如下所示:

代码语言:javascript
运行
复制
let playerOffset = $(player).offset().top;

或使用本机HTMLElement offsetTop值,请参阅此处https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetTop

代码语言:javascript
运行
复制
let playerOffset = player.offsetTop;
票数 1
EN

Stack Overflow用户

发布于 2018-03-29 14:16:12

player是一个js元素。offset()是一个jquery函数。因此,需要一个jquery对象:

代码语言:javascript
运行
复制
 $(player).offset().top

但是,从长远来看,您应该使用纯js或纯jquery,但不要将它们混合在一起,这只会造成混乱(如本例中的情况)。

票数 1
EN

Stack Overflow用户

发布于 2018-03-29 14:23:27

您必须在DOM元素上使用偏移量,这样的操作应该有效:

代码语言:javascript
运行
复制
$('.js-player').offset().top - $('.js-player').offset().top
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49558396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档