簡體   English   中英

無法從第一頁隱藏返回頂部按鈕

[英]Unable to hide back to top button from 1st page

我的“返回頂部”按鈕工作正常。 但是,該按鈕顯示在我想要在 20 次滾動后隱藏和顯示的頁面頂部。 我正在使用 w3 學校的示例。 當我在我的代碼中使用它時,這會引發錯誤。 我如何解決它?

Error
> (index):115 Uncaught TypeError: Cannot read property 'style' of null
at scrollFunction ((index):115)
at window.onscroll ((index):108)
scrollFunction  @   (index):115
window.onscroll @   (index):108

這是我的 CSS:

#myBtn {
width: 3rem;
height: 3rem;  
align-items:center !important;
    }

#myBtn  svg {
fill: #000;
display: block !important;margin: auto !important;
}

我的 Javascript 如下:

/** Scroll back-to-top */
//Get the button
var mybutton = document.getElementById("myBtn");

// When the user scrolls down 20px from the top of the document, show the button
window.onscroll = function() {scrollFunction()};

function scrollFunction() {
if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
mybutton.style.display = "block";
} else {
  mybutton.style.display = "none";
}
}

// When the user clicks on the button, scroll to the top of the document
function topFunction() {
document.body.scrollTop = 0;
document.documentElement.scrollTop = 0;
} 

var url = window.location.href;
            var index = url.lastIndexOf("/") + 1;
            var filename = url.substr(index);
            if (filename == "index.html") {
                $("top").hide() ;
            };

這是我定義按鈕的 HTML。

<button class="myBtn" type="button" aria-label="Back to Top" style="float:right;" onclick="topFunction()" id="myBtn">
<svg focusable="false" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 32 32" aria-hidden="true" style="will-change: transform;">
<path d="M16 14L6 24 7.4 25.4 16 16.8 24.6 25.4 26 24zM4 8H28V10H4z"></path></svg></button>

您已經在 function scrollFunction()之外定義了變量mybutton 嘗試在 function 中定義它,如下所示:

function scrollFunction() {
var mybutton = document.getElementById("mybtn")
if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
mybutton.style.display = "block";
} else {
  mybutton.style.display = "none";
}
}

或將其作為參數傳入,如下所示:

function scrollFunction(mybutton) {
if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
mybutton.style.display = "block";
} else {
  mybutton.style.display = "none";
}
}

只有1個錯誤。 只需更改var mybutton = document.getElementById("top"); to var mybutton = document.getElementById("myBtn"); var mybutton = document.getElementById("top"); to var mybutton = document.getElementById("myBtn");

除此之外,將display:none添加到按鈕。 因此,默認情況下它不會顯示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM