我按照w3 schools的指南,用javascript在html中制作了一个向上滚动按钮,当我把javascript和html放在它们应该在的地方时,其中一个javascript函数不起作用,它在vscode中变灰了,在chrome控制台中显示“函数未定义”。
This is how it looks in vscode:
我试着重写html和js中的代码,但没有成功。我还试着在“topFunction”函数下写一个新函数,它也变灰了,所以我不知道问题出在哪里。
这是完整的javascript和html:
https://jsfiddle.net/md5pf3hx/一个jsfidle与整个网站<button onclick="topFunction()" id="myBtn" title="Go to top">Top</button>
//Get the button:
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; // For Safari
document.documentElement.scrollTop = 0; // For Chrome, Firefox, IE and Opera
}
2条答案
按热度按时间watbbzwu1#
无法访问
topFunction
,因为它是在loadScript
函数内声明的。您需要删除
loadScript
函数如果希望脚本在页面加载后运行,可以添加
defer
参数rlcwz9us2#
您的问题是您没有在全局范围中定义
topFunction
。要允许您的HTML具有调用topFunction
的访问权限,您可以将其移到loadScript
定义之外。但是,您应该使用HTML
<script>
元素的内置defer
属性在HTML加载完成后执行JavaScript。这样,您就不需要
load
事件侦听器和全脚本函数 Package 器:希望这个有用。