老师我设置res为滚动条变量,定义的全局变量,在点击按钮返回顶部没有用,注释里的有用

来源:2-14 BOM特效开发(1)

我代码么问题

2021-10-23 15:13:56

<!DOCTYPE html>

<html lang="en">


<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

    <style>

        body {

            height: 5000px;

            background-image: linear-gradient(to bottom, green, red, blue);

        }


        .btn {

            width: 100px;

            height: 100px;

            background-color: #ccc;

            position: fixed;

            bottom: 100px;

            right: 100px;

            display: none;

        }

    </style>

</head>


<body>

    <input type="button" value="返回顶部" class="btn">

    <script>

        var btn = document.querySelector('.btn');

        var time; //清除定时器

        var res; //获取滚动条滑动多少

        window.onscroll = function () {

            res = document.documentElement.scrollTop || document.body.scrollTop;

            console.log(res);

            res >= 2000 ? btn.style.display = 'block' : btn.style.display = 'none';

        }


        btn.addEventListener('click', function () {

            time = setInterval(() => {

                res <= 0 ? clearInterval(time) : res -= 120;

                // document.documentElement.scrollTop <= 0 ? clearInterval(time) : document.documentElement

                //     .scrollTop -= 120;

            }, 20);

        });

    </script>

</body>


</html>


写回答

1回答

好帮手慕星星

2021-10-23

同学你好,res变量接收的是数字,数字改变不会倒着影响document.documentElement.scrollTop的值,除非再次赋值。所以页面不会滚动。就像下面这个例子:

https://img.mukewang.com/climg/6173c2df09a9b06203960106.jpg

将a赋值给b后,改变b值,a值并不会变

https://img.mukewang.com/climg/6173c364095cf71102160036.jpg

注释中的代码是直接给document.documentElement.scrollTop赋值的,所以能滚动

https://img.mukewang.com/climg/6173c3840934f67209810121.jpg

自己再理解下,祝学习愉快!

0

0 学习 · 15276 问题

查看课程