我对setInterval
有疑问。我正在尝试使用两个按钮来增加或减少具有滑动效果的scrollLeft
属性,但这没有用。
以下是我的代码:
var x;
var scrollDiv = document.getElementById("army_selection");
var scrollLeft = document.getElementById("scroll_left");
scrollLeft.addEventListener("mouseover", dec_scroll, false);
scrollLeft.addEventListener("mouseleave", function(){clearInterval(x);}, false);
var scrollRight = document.getElementById("scroll_right");
scrollRight.addEventListener("mouseover", inc_scroll, false);
scrollRight.addEventListener("mouseleave", function(){clearInterval(x);}, false);
/* Functions */
function inc_scroll() {
x = setInterval(scrollDiv.scrollLeft += 5, 1);
}
function dec_scroll() {
x = setInterval(scrollDiv.scrollLeft -= 5, 1);
}
答案 0 :(得分:1)
基本上,现在,scrollDiv.scrollLeft += 5
在滚动功能中执行一次,并且返回值被传递到setInterval
的第一个参数。因为它不是函数,所以不会再次调用。
setInterval()
将函数作为其第一个参数。由于scrollDiv.scrollLeft += 5
不是函数,因此需要将其包装在函数中:
function inc_scroll() {
x = setInterval(() => scrollDiv.scrollLeft += 5, 1);
}
function dec_scroll() {
x = setInterval(() => scrollDiv.scrollLeft -= 5, 1);
}
或者,如果您喜欢旧的函数格式:
function inc_scroll() {
x = setInterval(function() { scrollDiv.scrollLeft += 5 }, 1);
}
function dec_scroll() {
x = setInterval(function() { scrollDiv.scrollLeft -= 5 }, 1);
}