经过一段不错的搜索时间后,我仍然没有找到这个特定功能的任何信息,但我确信它可以完成。
我正在使用的网站虽然有一个非常短的页面。我为这个单页长页创建了一个滚动到顶部按钮,没有任何问题。我希望这个按钮只适用于这个单独的页面,但当我在网站上加载另一个页面时,我得到控制台错误 - '未捕获的TypeError:无法在scrollFunction'
读取null的属性'style'这是我试图用来检查页面的href的函数:
window.onscroll = function() {scrollFunction()};
function scrollFunction() {
if (window.location.href.indexOf("portfolio.html")) {
if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
document.getElementById("scrollButton").style.display = "block";
} else {
document.getElementById("scrollButton").style.display = "none";
}
}
}
非常感谢任何指导。
答案 0 :(得分:1)
答案 1 :(得分:1)
这与Sujen K.提出的答案类似,但有一些差异可以简化代码清晰度并使性能更好一些:
var elementExists = document.getElementById('scrollButton');
// We can skip the page URL check because in theory this
// behavior is desired on any page with the scrollButton
if (elementExists) {
// By moving the onScroll function into the if statement
// it no longer has to check on pages without scrollButton
// We can also simplify how it is set up.
window.onscroll = function () {
if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
// We can reuse elementExists here for a minor
// performance gain instead of having to get it again.
elementExists.style.display = "block";
} else {
elementExists.style.display = "none";
}
};
}

答案 2 :(得分:0)
看看这个解决方案:
http://jsfiddle.net/neeklamy/RpPEe/
$(document).ready(function () {
$(window).scroll(function () {
if ($(this).scrollTop() > 100) {
$('.scrollup').fadeIn();
} else {
$('.scrollup').fadeOut();
}
});
$('.scrollup').click(function () {
$("html, body").animate({
scrollTop: 0
}, 600);
return false;
});
});
另外 - 考虑放弃JS并给你的身体一个ID(id ="某些东西"),然后在(href =" #thing")有一个链接点。它解决了没有脚本的问题。
答案 3 :(得分:0)
看看这个解决方案: https://jsfiddle.net/9x204t2o/1/
<强> JS:强>
$(document).ready(function(){
$(window).scroll(function(){
if ($(this).scrollTop() > 100) {
$('.scrollToTop').fadeIn();
} else {
$('.scrollToTop').fadeOut();
}
});
$('.scrollToTop').click(function(){
$('html, body').animate({scrollTop : 0},800);
return false;
});
});
<强> CSS:强>
.scrollToTop{
width: 100px;
height: 80px;
padding: 10px;
text-align: center;
background: whiteSmoke;
font-weight: bold;
color: #444;
text-decoration: none;
position: fixed;
bottom: 0;
right: 0;
display: none;
background: url(https://cdn3.iconfinder.com/data/icons/iconic-1/32/arrow_up_alt1-512.png) no-repeat;
background-size: 40px;
background-position: 40px 30px;
}
.scrollToTop:hover{
text-decoration:none;
}
HTML:
<script src="https://code.jquery.com/jquery-3.1.1.js"></script>
<a href="#" class="scrollToTop">Scroll To Top</a>
[...]
可以帮忙吗?