質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

299閲覧

javascriptでスクロールさせたい

librashogi

総合スコア16

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/01/09 03:46

ボタンを押すと1へスクロールさせたいです。
topに戻るjsにbodyやhtmlのセレクタが見当たらないので、どの部分を変更すればいいのか分かりません。
ご教授お願いします。

html

1<body> 2 <div id="scroll-one">1</div> 3 <button id="scroll-btn">1へスクロール</button> 4 <div id="top">top</div> 5</body>

js

1scrollTop("top",500); 2function scrollTop(elem,duration){ 3var target=document.getElementById(elem); 4target.addEventListener("click",function(){ 5var currentY=window.pageYOffset; 6var step=duration/currentY>1?10:100; 7var timeStep=duration/currentY*step; 8var intervalID=setInterval(scrollUp,timeStep); 9function scrollUp(){ 10currentY=window.pageYOffset; 11if(currentY===0){ 12clearInterval(intervalID); 13}else{ 14scrollBy(0,-step); 15} 16} 17}); 18}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyabi_takatsuk

2019/01/09 03:58

topとは、ページの一番上ということでよろしいですか?
librashogi

2019/01/09 05:18

説明不足ですみません。ページ内リンクにスクロールさせたいのですが、教本にはトップに戻るコードしか載っていませんでした。なのでそのコードを編集しようとしたのですが、どこを編集すればいいのか分からなかったので、質問させて頂きました。
guest

回答3

0

ご自身で作られているscrollTopというfnctionが、
第一引数に設定されたIDを持つ要素に対してトップにスクロールするイベントを登録するように作られているじゃないですか?
なので、

js

1scrollTop("top",500); 2scrollTop("scroll-btn",500); // ←これを追加

とするだけでいいのでは?

投稿2019/01/09 04:14

runny_nose

総合スコア280

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

librashogi

2019/01/15 03:03

回答ありがとうございます。すみません、自分で作ったコードではなく、教本に載ってたjavascriptなのであまり理解できていませんでした・・・
guest

0

ベストアンサー

JavaScript スムーススクロール」で検索すると、以下のように実装サンプルが出てくるので、それを参考にされてはいかがでしょう。

【JavaScriptでスムーススクロールを実装 - Qiita】
https://qiita.com/junya/items/14d9b0828515f169e65e

【【脱jQuery!】ページ内リンクのスムーススクロールをjQueryなしで実装するコード | WEMO】
https://wemo.tech/1645

投稿2019/01/11 15:38

kei344

総合スコア69398

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

librashogi

2019/01/15 02:07

スムーススクロールでは検索をかけていませんでした。ありがとうございます。
guest

0

setintervalとかつかったことないのですが、このやりかただと、intervalidが事前には取得できないから、想定通りにはうごかない。
topなら最後0になるからいいですけど、途中だとうまくスクロール量を調整してあげないと、==にならないです。

とりあえず、scroll-btnというidのdivに対して、scroll-oneより上になるまでスクロールできるようなコードにはしてみた。
やりたかったのは、setintervalのときに、目的の場所をわたしてあげて、目的の場所をしっているスクロール関数を返すように作ってあげればいいと思ったこと。

html

1<html> 2<head> 3<script language="javascript"> 4// scrollTop("top",500,"bodytop"); 5// scrollTop("scroll-btn", 500, "scroll-one"); 6 function scrollTop(elem,duration, toElem){ 7 var target = document.getElementById(elem); 8 var upto = document.getElementById(toElem); 9 target.addEventListener("click",function(){ 10 var currentY=window.pageYOffset; 11 var step=duration/currentY>1?10:100; 12 var timeStep=duration/currentY*step; 13 var intervalID=setInterval(scrollUp(intervalID, upto.offsetTop),timeStep); 14 function scrollUp(intervalID, dest){ 15 return function() { 16 currentY=window.pageYOffset; 17 if(currentY<=dest){ 18 console.log("come"); 19 console.log(intervalID); 20 console.log(clearInterval(intervalID)); 21 clearInterval(intervalID); 22 }else{ 23 scrollBy(0,-step); 24 } 25 }; 26 } 27 }); 28 } 29</script> 30</head> 31 32<body id="bodytop" onload='scrollTop("top",500,"bodytop");scrollTop("scroll-btn", 500, "scroll-one");'> 33 <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> 34 <div id="scroll-one">1</div> 35 <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> 36 <div id="scroll-btn">1へスクロール</button> 37 <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> 38 <div id="top">top</div> 39</body> 40</html>

正直、おとなしく既存のライブラリとかでやったほうがいいと思います。


deprecated

ちゃんと読んでませんが、TOPに戻れていると仮定して、これで良いのでは?

html

1<button id="scroll-btn" onclick="scrollTop('scroll-one',500)">

投稿2019/01/09 03:50

編集2019/01/09 05:31
papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2019/01/09 03:59

質問者のコードは「#(パラメータ)」の要素に「クリックしたらトップに戻る」イベントをつけるだけのコードみたいです。
papinianus

2019/01/09 04:53

kei344様 ご指摘ありがとうございます。ご指摘に添ってコードを読みました。`scrollTop("top",500);`はトップにトップに戻る機能を付けているのですね。
librashogi

2019/01/15 03:04

回答ありがとうございます、自分で動かしてみて、一度試してみます。ご丁寧にコードまでありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問