Javascript 设置间隔问题

Javascript 设置间隔问题,javascript,Javascript,我对setInterval有问题。我正在尝试制作两个按钮,以增加或减少带有幻灯片效果的scrollLeft属性,但它不起作用 下面是我的代码: var x; var scrollDiv = document.getElementById("army_selection"); var scrollLeft = document.getElementById("scroll_left"); scrollLeft.addEventListener("mouseover", dec_scroll, f

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

基本上,现在在滚动函数中执行一次
scrollDiv.scrollLeft+=5
,返回值传递给
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);
}

很 完美!我没有注意到我没有把它放在函数中,非常感谢!