javascript - JS在向下滚动到某个部分时更改类无法正常工作
问题描述
我有一个可行的功能,它会触发我的部分并在它进入视图时将它的类更改为另一个类。这里是:
<script>
document.addEventListener('scroll', function (e) {
var top = window.pageYOffset + window.innerHeight,
isVisible = top > document.querySelector('#container').offsetTop;
if (isVisible) {
document.getElementById('container').setAttribute("class", "h2class2")
}
});
</script>
但是我有 3 个不同的部分,出于某种原因,它们在第一次触发后同时改变了样式。我做错了什么?这是 3 个不同触发器的代码,它们是相同的,只是 ID 和类和变量已更改:
<!-- THE FIRST TRIGGER-->
<script>
document.addEventListener('scroll', function (e) {
var top = window.pageYOffset + window.innerHeight,
isVisible = top > document.querySelector('#container').offsetTop;
if (isVisible) {
document.getElementById('container').setAttribute("class", "h2class2")
}
});
</script>
<!-- THE SECOND TRIGGER-->
<script>
document.addEventListener('scroll', function (e) {
var top2 = window.pageYOffset + window.innerHeight,
isVisible2 = top2 > document.querySelector('#container2').offsetTop;
if (isVisible2) {
document.getElementById('container2').setAttribute("class", "p2class2")
}
});
</script>
<!-- THE THIRD TRIGGER-->
<script>
document.addEventListener('scroll', function (e) {
var top3 = window.pageYOffset + window.innerHeight,
isVisible3 = top3 > document.querySelector('#container3').offsetTop;
if (isVisible3) {
document.getElementById('container3').setAttribute("class", "h3class2")
}
});
</script>
谢谢你的帮助。
解决方案
所以,我通过将触发器 ID 更改为部分 ID 解决了这个奇怪的问题,之前它们是 P 和 H 的 ID。这很奇怪,但是在我将触发器 ID 更改为部分 ID 之后,它开始正常工作。我的意思是这一行:
isVisible = top > document.querySelector('#container').offsetTop;
#container 应该是一个部分。(在我的情况下,它只有在更改后才开始正常工作)
推荐阅读
- php - 在 php 上获取文件扩展名
- javascript - 倒计时结束后重定向
- python - 确定时间戳的可能日期时间范围
- bash - Makefile .tar:展平源文件的目录结构
- docker - Docker Compose 通过 SSH 失败
- python - 获取错误 AttributeError: 'datetime.datetime' 对象在尝试添加一些日期时间时没有属性 'timedelta'
- sqlite - 将 Nesper 连接到外部数据库 PgSQL/SQLite
- synchronization - 如何在 p2p 游戏的 2 个对等方之间同步时钟
- google-cloud-platform - 验证模型从 Cloud Scheduler 上传到 VertexAI 作业
- python - 通过 django SMTP 发送电子邮件而不在刷新时发送表单数据?