添加类仅在数组中的最后一个 div 上执行

呼叫替代

当每个 div 的 top 属性.js-player在 10 到 100 之间时,单词#mute应该.active添加下面的代码只.active在最后一个.js-activediv执行添加我哪里错了?任何指针将不胜感激。

const players = Array.from(document.querySelectorAll('.js-player')),
          mute = document.querySelector('#mute');
        
    window.addEventListener('scroll', function(e) {
        players.forEach(function(player) {
            let distance = player.getBoundingClientRect().top;
            
            if (10 < distance && distance < 100) {
                mute.classList.add('active');
            } else {
                mute.classList.remove('active');
            }
        })
    });
.js-player {
  height: 150px;
  width: 200px;
  background-color: red;
  margin: 8em 2em;
}

#mute {
  position: fixed;
  top: 10px;
  left: 10px;
}

.active {
  color: green;
}


.filler {
 height: 400px;
}
 
<div class="js-player"></div>
<div class="js-player"></div>
<div class="js-player"></div>

<div class="filler"></div>

<div id="mute">mute</div>

戴夫

你想知道的是为什么只有最后一个.js-player决定 div 是否有active类?

如果是这样,每次发生滚动事件时,它都会遍历玩家,然后添加或删除active该类。因此,当它到达最后一个时.js-player,如果最后一个.js-player不在距离范围内,则active如果另一个设置它,它将删除该类,如果是,则添加它,即使另一个删除它也会设置它。

您需要做的是在找到所需距离内的玩家后停止检查,例如:

const players = Array.from(document.querySelectorAll('.js-player')),
          mute = document.querySelector('#mute');
        
    window.addEventListener('scroll', function(e) {
        var matched = false;
        players.forEach(function(player) {
            if (matched) return;
            let distance = player.getBoundingClientRect().top;
            
            if (10 < distance && distance < 100) {
                mute.classList.add('active');
                matched = true;
            } else {
                mute.classList.remove('active');
            }
        })
    });
.js-player {
  height: 150px;
  width: 200px;
  background-color: red;
  margin: 8em 2em;
}

#mute {
  position: fixed;
  top: 10px;
  left: 10px;
}

.active {
  color: green;
}


.filler {
 height: 400px;
}
 
<div class="js-player"></div>
<div class="js-player"></div>
<div class="js-player"></div>

<div class="filler"></div>

<div id="mute">mute</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在最后一个<div>上添加“ fit”类

来自分类Dev

我如何使用JavaScript在最后一个div上添加类,它的长度是动态变化的

来自分类Dev

当某个图像放到div上时,如何向div添加一个类?

来自分类Dev

在第一个div上添加类以设置内部div的样式?

来自分类Dev

IE7-8上的jQuery click事件,不在div上执行,仅在其文本上执行

来自分类Dev

jQuery仅在mouseleave / mouseover上激活一个div

来自分类Dev

jQuery Get方法仅在一个div上运行

来自分类Dev

仅在一个div上使用jInvertScroll.js

来自分类Dev

单击特定的div时仅执行一次事件侦听器,但继续在其他div上执行

来自分类Dev

在最后一个div的PHP代码中添加跨度

来自分类Dev

显示div并在“ li hover”上的单独div中执行CSS动画

来自分类Dev

使用JQuery nextUntil从所有div中除所有集合中的最后一个上的removeClass

来自分类Dev

滚动条仅在一个div上而不在整个主体上

来自分类Dev

如何仅在数组的某些第一个元素上使用_.reduce

来自分类Dev

在执行diff函数时,如何仅在数据不为零或不考虑零后的第一个和最后一个值时如何执行

来自分类Dev

在div上单击/切换另一个div时更改div上的类

来自分类Dev

Javascript:在div上执行的scrollBy函数

来自分类Dev

在Mouseover上为嵌套div执行函数

来自分类Dev

fs.writefile仅在节点js中的最后一个函数中执行

来自分类Dev

在循环上摇一个div

来自分类Dev

在末尾的双向链表添加节点仅在printf上显示第一个和最后一个节点

来自分类Dev

将div放在另一个div上

来自分类Dev

将<div>放置在另一个<div>上

来自分类Dev

div位于另一个div的角上

来自分类Dev

添加类并删除仅在页面中的一个 div 上工作的类 JS。不为具有相同规格的其他人工作

来自分类Dev

元素上的多次单击绑定仅在敲门js中执行一个?

来自分类Dev

在元素上的多次单击绑定仅在敲除js中执行一个?

来自分类Dev

在元素上添加开始div标签,在另一个元素上添加结束div标签

来自分类Dev

如何选择容器div中的最后一个div?

Related 相关文章

  1. 1

    如何在最后一个<div>上添加“ fit”类

  2. 2

    我如何使用JavaScript在最后一个div上添加类,它的长度是动态变化的

  3. 3

    当某个图像放到div上时,如何向div添加一个类?

  4. 4

    在第一个div上添加类以设置内部div的样式?

  5. 5

    IE7-8上的jQuery click事件,不在div上执行,仅在其文本上执行

  6. 6

    jQuery仅在mouseleave / mouseover上激活一个div

  7. 7

    jQuery Get方法仅在一个div上运行

  8. 8

    仅在一个div上使用jInvertScroll.js

  9. 9

    单击特定的div时仅执行一次事件侦听器,但继续在其他div上执行

  10. 10

    在最后一个div的PHP代码中添加跨度

  11. 11

    显示div并在“ li hover”上的单独div中执行CSS动画

  12. 12

    使用JQuery nextUntil从所有div中除所有集合中的最后一个上的removeClass

  13. 13

    滚动条仅在一个div上而不在整个主体上

  14. 14

    如何仅在数组的某些第一个元素上使用_.reduce

  15. 15

    在执行diff函数时,如何仅在数据不为零或不考虑零后的第一个和最后一个值时如何执行

  16. 16

    在div上单击/切换另一个div时更改div上的类

  17. 17

    Javascript:在div上执行的scrollBy函数

  18. 18

    在Mouseover上为嵌套div执行函数

  19. 19

    fs.writefile仅在节点js中的最后一个函数中执行

  20. 20

    在循环上摇一个div

  21. 21

    在末尾的双向链表添加节点仅在printf上显示第一个和最后一个节点

  22. 22

    将div放在另一个div上

  23. 23

    将<div>放置在另一个<div>上

  24. 24

    div位于另一个div的角上

  25. 25

    添加类并删除仅在页面中的一个 div 上工作的类 JS。不为具有相同规格的其他人工作

  26. 26

    元素上的多次单击绑定仅在敲门js中执行一个?

  27. 27

    在元素上的多次单击绑定仅在敲除js中执行一个?

  28. 28

    在元素上添加开始div标签,在另一个元素上添加结束div标签

  29. 29

    如何选择容器div中的最后一个div?

热门标签

归档