前提・実現したいこと
共通パーツをfetch API でインクルードしてHTMLに表示しているのですが、その要素にスクロールイベントが発火しなくて困っています。
ページトップ・ダウンボタンでページの上下にスクロールさせたいのですが、どちらを押してもページ上部に一度行ってから、下まで戻ってしまいます。
発生している問題・エラーメッセージ
特になし
該当のソースコード
js
1if (document.getElementsByClassName("page-top") != null) { 2 window.addEventListener('DOMContentLoaded', function () { 3 fetch('/page-top.html') 4 .then(response => response.text()) 5 .then(data => { 6 const parser = new DOMParser(); 7 const html = parser.parseFromString(data, "text/html"); 8 const p_elements = html.getElementsByClassName('page-top')[0]; 9 const file_area = document.getElementsByClassName("page-top")[0]; 10 file_area.innerHTML = p_elements.innerHTML; 11 }); 12 }); 13}
jQuery
1// pagetop button 2 var Btn = $('.page-top'), 3 topBtn = $('.page-all'), 4 bottomBtn = $('.page-bottom'); 5 Btn.hide(); 6 $(window).scroll(function () { 7 if ($(window).scrollTop() > 300) { 8 Btn.fadeIn(); 9 } else { 10 Btn.fadeOut(); 11 } 12 }); 13 Btn.on('click', topBtn, function () { 14 $('html').animate({ 15 scrollTop: 0 16 }, 1050); 17 return false; 18 }) 19 Btn.on('click', bottomBtn, function () { 20 $('html').animate({ 21 scrollTop: $(document).height() 22 }, 1050); 23 return false; 24 });
page-top.html
HTML
1<div class="page-top"> 2 <a class="page-all">△</a> 3 <a class="page-bottom">▽</a> 4</div>
試したこと
documentに対してクリックイベントを起こすと、ボタン以外の部位を押してもスクロールされてしまって困ります。それも上部から下部まで戻ってきてしまいます。
JS
1$(document).on('click', topBtn, function () { 2 $('html').animate({ 3 scrollTop: 0 4 }, 1050); 5 return false; 6 }); 7 $(document).on('click', bottomBtn, function () { 8 $('html').animate({ 9 scrollTop: $(document).height() 10 }, 1050); 11 return false; 12 });
補足情報(FW/ツールのバージョンなど)
Firefox 最新版
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/22 23:32