制作打开/关闭window.scrollBy()的按钮时遇到麻烦

时间:2019-12-18 10:07:51

标签: javascript scroll automation setinterval clearinterval

我正在尝试创建一个按钮,单击该按钮时窗口会自动滚动,再次按下同一按钮时它将关闭。

这是我到目前为止所走的路的一个小提琴:

https://jsfiddle.net/swurvinmervin/n7poL3hw/34/

HTML:

<div class = "b">
<p>pretend button</p>
</div>

样式:

div {
    width: 50px;
    height:5000px;
    background: red;
}

JavaScript:

var button = document.querySelector("div");

button.addEventListener("click",buttonFunction);

function buttonFunction() {
    if (button.classList.contains("b")){
        button.classList.add("a");
        button.classList.remove("b");
    } else {
        if (button.contains("a")){
            button.classList.add("b");
            button.classList.remove("a");
        }       
    }

    var i = 0;

    var winScroll = setInterval(function() {
        if (button.classList.contains("a")){
            window.scrollBy(0,500);
        } else {
            if(button.classList.contains("b") ){ 
                clearInterval(winScroll);
            }
        }  
    }, 200);
}

1 个答案:

答案 0 :(得分:1)

function buttonFunction() {
    if (button.classList.contains("b")){
        button.classList.add("a");
        button.classList.remove("b");
    } else {
        if (button.classList.contains("a")){
            button.classList.add("b");
            button.classList.remove("a");
        }       
    }

    var i = 0;

    var winScroll = setInterval(function() {
        if (button.classList.contains("a")){
            window.scrollBy(0,500);
        } else {
            if(button.classList.contains("b") ){ 
                clearInterval(winScroll);
            }
        }  `enter code here`
    }, 200);
}

else块中的if条件存在错误,应该是在.contains之前缺少if(button.classList.contains(“ a”)而不是if(button.contains(“ a”))classlist