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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

jQuery

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

Q&A

解決済

3回答

2984閲覧

ページ移動した後に特定の要素まで移動

sleeeep12

総合スコア36

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

jQuery

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

0グッド

2クリップ

投稿2017/11/02 06:54

今、<a>タグをクリック後、ページ移動した後に特定の要素まで移動させるというのに挑戦してるのですが、なかなかうまくいきません。以下ナビだとします。

(「href="URL/#~~~"」とすれば、ページ移動と同時にその要素に移動はできますが、URLに/#~~~とついてしまい、都合が悪いです。)

<a id="link1" href="同じURL">あああ</a> <a id="link2" href="同じURL">いいい</a> <a id="link3" href="同じURL">ううう</a>

上のリンククリックで、「同じURL」に飛んだ後に、それぞれのIDごとに違う要素に移動というのをやりたいです。
理想は、例えば<a id="link1" href="同じURL">あああ</a>をクリックして、別ページに移動した瞬間に「id="Link1"」がついてる要素に移動するという感じです。

$('#link1').click(function() { $("html,body").animate({scrollTop:$('#Link1').offset().top}); });

ネットで調べながらjqueryで今やってみたのですが、上記のコードではanimeteせずでした。
settimeでもやっても上手くいかず、根本的に知識が足りてないなと思いここでの質問に至りました。どうか宜しくお願いします。

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

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

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

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

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

masaya_ohashi

2017/11/02 07:32

ちょっと確認なのですが、「同じURL」となっているのは、aタグが置いてあるページと同じURLという認識で正しいですか?それともaタグのあるページとは切り替わるページですか?
sleeeep12

2017/11/02 07:38

「同じURL」は別ページのことで、上記の<a>タグも別ページということです。aタグのリンクで、ページは切り替わります。説明不足でした、すみません;
masaya_ohashi

2017/11/02 07:41

ハッシュ(#)はつけたくないが、遷移先ページの特定の場所へスクロールしたい、ということですか?ハッシュを付けたくないということはクエリ(URLの後ろの?a=bのような文字列)が付くのもだめですか?
sleeeep12

2017/11/02 07:45

はい、まさにそういうイメージでございます。
masaya_ohashi

2017/11/02 07:47

うーん…JavaScriptオンリーでやりたいのですよね?ハッシュの付いたURLを「ハッシュ付きで遷移して、遷移後ハッシュ部分を消す」というのはありですか?
sleeeep12

2017/11/02 07:54

どうでしょうか、、まだまだ知識が浅くて何とも答えられないのですが、そもそものURLにハッシュタグを付けたくない理由が、別コードで、「if(url == "http://URL"){〜〜〜}else{〜〜〜}」というコードを書いていて、URLに#〜が付くとその部分が動かなくなるからなんです。ここをいじっても良いんですが、かなり気持ち悪いコードになるかと思い、リンクでのアクションを操作しようと考えている次第です。
masaya_ohashi

2017/11/02 07:58

とりあえず別回答としてページをまたいでもなんとかする方法を書きました。
guest

回答3

0

animateしたいのでしょうか?それともダイレクトにとんでいいのでしょうか?

javascript

1$(function(){ 2 $(window).scrollTop($('#Link1').offset().top); 3});

追記

念のため追記しておきます
load時に#d2にとばします

javascript

1$(function(){ 2 $(window).scrollTop($('#d2').offset().top); 3});

HTML

1<div id="d1" style="height:1000px">d1</div> 2<div id="d2" style="height:1000px">d2</div> 3<div id="d3" style="height:1000px">d3</div> 4<div id="d4" style="height:1000px">d4</div>

投稿2017/11/02 07:20

編集2017/11/02 07:48
yambejp

総合スコア114839

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

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

sleeeep12

2017/11/02 07:43

早々なご回答ありがとうございます。 その要素までポンと移動するのかスクロールして表示するのかは特にこだわりはなく、どちらでも大丈夫です。
yambejp

2017/11/02 07:50

ポンと移動していいなら追記のような感じでどうでしょうか?
sleeeep12

2017/11/02 08:40

お返事ありがとうございます。 上記のコードで試して、ページ遷移はしたのですが、要素まで移動はされませんでした。。
guest

0

ベストアンサー

別ページであることが発覚したのでそれ用に考え直してみました。

<a id="link1" href="同じURL">があるページの処理

JavaScript

1$('#link1').click(function(e) { 2 document.cookie = 'hiddenhash=Link1'; // cookieにhiddenhashという名前で飛びたい要素の名前を保存しておく 3});

リンク先のページ

JavaScript

1$(function() { 2 var cookies = document.cookie.split(";"); // cookie文字列を;区切りで取得 3 var map = {}; 4 for(var index in cookies) { 5 var cookie = cookies[index].trim(); // 両端の空白を削除 6 var pair = cookie.split("="); // cookieを=で分割 7 map[pair[0]] = pair[1]; // cookieの値を連想配列に格納 8 } 9 // cookieの中にhiddenhashがあったら、該当の位置までスクロール 10 if("hiddenhash" in map && map["hiddenhash"].length > 0) { 11 $("html,body").animate({scrollTop:$('#' + map["hiddenhash"]).offset().top}); 12 } 13 document.cookie = 'hiddenhash='; // cookieのhiddenhashを削除しておく 14});

投稿2017/11/02 07:56

masaya_ohashi

総合スコア9206

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

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

sleeeep12

2017/11/02 08:44

大変ありがとうございます。 うーんこれでもダメみたいです、、、
masaya_ohashi

2017/11/02 09:03 編集

だめ、というとなにが問題なのでしょう?ログにエラーが出ていますか?私も動作確認まではしていないので、エラーがあったら報告してくれれば直せますよ
sleeeep12

2017/11/02 09:46

コンソールログにはエラーはありませんでした。 視覚的な動作では、リンククリック後、ページ遷移はするものの要素までスクロールはされませんでした。 もしかしてコードの配置の仕方が悪いのでしょうか。。 そのaタグのナビゲーションはグローバルナビとして全てのページに存在しているのですが、今回はその他ページの場合のみ、aタグの動作を違う動作として操作しようとしています。なので $('#link1').click(function(e) { document.cookie = 'hiddenhash=Link1'; // cookieにhiddenhash }); のコードを if(url == "http://トップページ){~~~}else{~~~} の else{~~~}の部分に配置しました。 そして、このfunctionが終わって、次のfunctionとして $(function() { var cookies = document.cookie.split(";"); // cookie文字列を;区切りで取得 var map = {}; for(var index in cookies) { var cookie = cookies[index].trim(); // 両端の空白を削除 var pair = cookie.split("="); // cookieを=で分割 map[pair[0]] = pair[1]; // cookieの値を連想配列に格納 } // cookieの中にhiddenhashがあったら、該当の位置までスクロール if("hiddenhash" in map && map["hiddenhash"].length > 0) { $("html,body").animate({scrollTop:$('#' + map["hiddenhash"]).offset().top}); } document.cookie = 'hiddenhash='; // cookieのhiddenhashを削除しておく }); を配置しました。 これが問題なのでしょうか。。。
masaya_ohashi

2017/11/03 01:19

いろいろな箇所にconsole.logを入れて、どこまで処理が呼ばれているか、document.cookie、map、hiddenhashの値はどうなっているかを確認してみてください
sleeeep12

2017/11/05 07:25

ありがとうございました。色々確認しながら調べたり試行錯誤して、ついにできました。感謝です!!!
guest

0

この処理は「リンクが置いてあるページとスクロールしたい場所が同一ページ内にある場合」のみの処理です

scrollTopに渡しているidが#Link1で大文字になっているのが原因ではないでしょうか。
あと、clickイベントをpreventDefaultしたら#がURLに付く処理を止められます。

JavaScript

1$('#link1').click(function(e) { 2 e.preventDefault(); 3 $("html,body").animate({scrollTop:$('#link1').offset().top}); 4});

投稿2017/11/02 07:26

編集2017/11/02 07:33
masaya_ohashi

総合スコア9206

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

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

sleeeep12

2017/11/02 07:41

早々なご回答ありがとうございます。 #linkはaタグについているIDで、#Linkはリンク先のページに存在する要素についてるidですね。 aタグクリック→ページ移動→そのページの特定の要素の部分を表示、といったイメージです。分かりづらくてすみませんでした ;_;
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問