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

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

新規登録して質問してみよう
ただいま回答率
85.46%
スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

1103閲覧

スムーズスクロールの実装前に値の取得ができているかの確認

ShojiroAbe

総合スコア31

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/09/07 08:37

js

1 $(".menu_ul li a[href^='#']").click(function(){ 2 3 var menu_href = $(this).attr("href"); 4 console.log(menu_href); 5 var heref_top = menu_href.offset().top; 6 console.log(href_top); 7 // $("html, body").animate({scrollTop:href_top}, speed, "swing"); 8 }); 9

この記述で、押した物に応じてスクロールをしたいのですが
menu_hrefは取得できるのですが
そのあとの
var heref_top = menu_href.offset().top;に対して
Uncaught TypeError: menuhref.offset is not a function
が出てしまいます
どうすれば解決しますでしょうか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

js

1$(".menu_ul li a[href^='#']").click(function(){ 2 var menu_href = $(this).attr("href"); //アンカーの値を取得 3 console.log(menu_href); 4 var target = $(menu_href); // アンカーの値から移動先を取得 5 var href_top = target.offset().top; //移動先の座標を取得 6 console.log(href_top); 7 $("html, body").animate({scrollTop:href_top}, 400, "swing"); 8})

Codepenサンプル

投稿2020/09/07 13:14

編集2020/09/07 14:04
hatena19

総合スコア33790

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

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

ShojiroAbe

2020/09/07 17:07

回答ありがとうございます 動作をうまく行ったのですが いくつかのli項目を押すと Uncaught TypeError: Cannot read property 'top' of undefined が出てしまいます この場合何がいけないのでしょうか?? 立ち続けの質問申し訳ありません よろしくお願いします
ShojiroAbe

2020/09/07 17:21

すいません こちら側のミスがありました hatena19さんの記述ミスとかではないです すいませんでした
guest

0

コードを見ると、menu_hrefの値はクリックされた要素の href の値(=文字列)なので、offsetというプロパティはありません。

とりあえず手元で動作が確認できたコードは以下です。

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <title>Document</title> </head> <body> <br><br><br><br><br><br><br><br><br><br><br><br><br> <br><br><br><br><br><br><br><br><br><br><br><br><br> <br><br><br><br><br><br><br><br><br><br><br><br><br> <br><br><br><br><br><br><br><br><br><br><br><br><br> <ul class="menu_ul"> <li> <a href="#290196.html">test</a> </li> </ul> <script> $(function () { $(".menu_ul li a[href^='#']").click(function(){ // var menu_href = $(this).attr("href"); var menu_href = $(this); console.log(menu_href); var href_top = menu_href.offset().top; console.log(href_top); // $("html, body").animate({scrollTop:href_top}, speed, "swing"); }); }); </script> </body> </html>

投稿2020/09/07 09:04

YakumoSaki

総合スコア2027

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問