【发布时间】:2021-07-26 16:12:32
【问题描述】:
我正在尝试将间隔设置为仅在用户滚动到某个高度以下时调用的函数。我的代码没有返回错误,并且该函数也没有运行。但是,我尝试在函数末尾记录一个随机数,但它没有,所以我认为它与我的函数有关。看看:
var firstString = ["This ", "is ", " me."];
var firstPara = document.querySelector("#firstPara");
var distanceSoFar = (document.body.scrollTop);
window.addEventListener("scroll", function() {
setInterval(slideIn, 450);
});
function slideIn() {
if (distanceSoFar > "130") {
for (var i = 0; i < firstString.length; i++) {
var stringOut = firstString.shift();
firstPara.innerHTML += stringOut;
console.log("5");
}
}
};
firstPara 只是页面上 div 中的一个段落。所以这个想法是在用户滚动到该视图时在其中放置一些文本,如下所示:
body {
height: 1000px;
}
div {
position: relative;
top: 700px;
}
div #firstPara {
border: 1px solid;
}
【问题讨论】:
-
您的代码将在每次滚动时添加一个新的间隔事件。这是一种不好的做法。
-
@Rajesh 调用的函数有一个循环来检查是否应该首先调用它。如果条件不满足,则根本不调用。
-
试试这样的:JSfiddle
-
@Rajesh 似乎您的小提琴中的 clearInterval 函数不起作用,因为在每次滚动时,interval 函数都会一遍又一遍地触发。其次,我的代码中
for循环的原因是检查匹配字符串数组是否弹出了不必要的字符。即使firstString字符已用尽,您的代码也会不断弹出和shifting
标签: javascript dom dom-events setinterval