javascript - 数组中的 div 距窗口顶部的距离

标签 javascript jquery

我试图获取数组中 div 与窗口顶部的距离,但收到错误“player.offset 不是函数”。我哪里出错了,任何帮助将不胜感激。

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)
    })
});
.js-player {
  height: 100px;
  width: 100px;
  margin: 100px;
  background-color: red
}
<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>

最佳答案

.offset() 是一个 jQuery 函数,请参阅 http://api.jquery.com/offset/ .

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

let playerOffset = $(player).offset().top;

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

let playerOffset = player.offsetTop;

关于javascript - 数组中的 div 距窗口顶部的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49558396/

相关文章:

javascript - JQuery AjaxSetup BeforeSend Promise

javascript - 动态创建的 <td> 上的单击事件

javascript - 如何从字符串中删除后缀?

jquery - 如何使用 jQuery 播放 wav 音频文件?为什么wav文件无法解码?

jquery - 添加类的 id

javascript - 在一个主干 View 中使用两个模型时遇到问题

javascript - 如何使用 jquery/js/css 渐进地突出显示一大块文本

jquery - 更改类中每个 html 选择元素的选定选项

jquery - 如何避免 jQuery 中的重复

javascript - 图层未显示,即使它被分配了高 z-index