setInterval问题

时间:2018-08-01 23:49:59

标签: javascript

我对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);
}

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);
}