单击按钮时平滑滚动:对我不起作用,但在代码片段中效果很好

Smooth scroll on button click: Not working for me but works great in the Code Snippet

我是 JavaScript 和 jQuery 的初学者。我的 css 和 JavaScript 代码在 html 文件之外。这个问题已经有了答案,我试过了,尝试了所有的代码,但滚动不起作用。我不知道我错过了什么。 jQuery 已安装(甚至 CDN)。 好吧,这段代码在代码片段中有效,所以 javaScript 或 JQuery 可能有问题。我仍然不知道我的错误是什么。请帮忙。

$("#btn1").click(function() {
    $('html,body').animate({
        scrollTop: $("#fir").offset().top},
        'slow');
});

$("#btn2").click(function() {
    $('html,body').animate({
        scrollTop: $("#sec").offset().top},
        'slow');
});
.button1{ position:absolute; top:130px; left:150px; font-size: 10px; cursor:pointer; color:#000000;}
.main{ width: 100%; height:500px; background:black; }
.first{ width: 100%; height: 1000px; background: green; }
.second{ width: 100%; height: 1000px; background: blue; }
 <!DOCTYPE html>
    <html>
    <head> 
    <link rel="stylesheet" type="text/css" href="css/style.css"> 
    </head>

    <body>
    <script src="http://code.jquery.com/jquery-2.2.1.min.js"></script> <!-- JQuery CDN -->
    <script>window.jQuery || document.write('<script src="JQuery.js"><\/script>');</script>  <!-- JQuery library -->
    <script src="js/script.js" type="text/javascript"></script> <!-- my javascript -->

    <div class="main">
    <button id="btn1" type="button" class="button1">Sign Up</button>
    <button id="btn2" type="button" class="button1" style=left:250px>Sign In</button></div>
    <div id="fir" class="first"></div>
    <div id="sec" class="second"></div>

    </body>
    </html>

我已将所有元素组合(为了简化我的测试)到单个 .html 文件中并进行了一些修改,它对我有用:

  • 在文档末尾移动 script 个标签
  • 添加document.ready()逻辑
<!DOCTYPE html>
<html>
<head> 
<link rel="stylesheet" type="text/css" href="css/style.css"> 
</head>
<body>
<style type="text/css">
    .button1{ position:absolute; top:130px; left:150px; font-size: 10px; cursor:pointer; color:#000000;}
    .main{ width: 100%; height:500px; background:black; }
    .first{ width: 100%; height: 1000px; background: green; }
    .second{ width: 100%; height: 1000px; background: blue; }
</style>
<div class="main">
<button id="btn1" type="button" class="button1">Sign Up</button>
<button id="btn2" type="button" class="button1" style=left:250px>Sign In</button></div>
<div id="fir" class="first"></div>
<div id="sec" class="second"></div>

<script src="http://code.jquery.com/jquery-2.2.1.min.js"></script> <!-- JQuery CDN -->
<script type="text/javascript">
    $( document ).ready(function() {
        $("#btn1").click(function() {
            $('html,body').animate({
                scrollTop: $("#fir").offset().top},
                'slow');
        });
        $("#btn2").click(function() {
            $('html,body').animate({
                scrollTop: $("#sec").offset().top},
                'slow');
        });        
    });

</script>
</body>
</html>