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

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

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

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

jQuery

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

Q&A

1回答

761閲覧

Javascriptでパラメータを取得して条件判定したいです。

clovers

総合スコア10

JavaScript

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

jQuery

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

0グッド

0クリップ

投稿2018/10/19 01:51

編集2018/10/24 06:47

初心者です。

以下のアコーディオンメニュー**(各ページのサイドに設置)**を、リンクをクリックした時に、リンク先でURLに特定のパラメータを付与して、クリックしたグループのものだけ開いている(メニューが開いている)状態にしたいです。
(例、menu1-1をクリック後、category1はリンク先で開いたまま。他のcategoryは閉じている。)

カテゴリー1(リンクメニュー数:3)、カテゴリー2(リンクメニュー数:18)
カテゴリー3(リンクメニュー数:6)、カテゴリー4(リンクメニュー数:3)
カテゴリー5(リンクメニュー数:5)、カテゴリー6(リンクメニュー数:3)
カテゴリー7(リンクメニュー数:2)、カテゴリー8(リンクメニュー数:18)です。

カテゴリー毎にパラメータの数を変えて付与し、
URLで「?menu=1」~「?menu=8」が表示されているのは確認できました。

URLのパラメータを取得し、条件判定して状況に応じて該当のメニューにクラスを付与してオープン状態にしておく為のコードを教えていただけますでしょうか。

**※試しにパラメータを取得し、値が1の場合にクラスを付与してみましたが、リンク先でカテゴリー1のメニューは閉じたままでした。
**

返信遅くなり大変申し訳ございませんでした。

html

1(例) 2<ul> 3<li> 4<div class="category">category1</div> 5<ul class="fxmn"> 6<li><a href="http://www.com/11?menu=1">menu 1-1</a></li> 7<li><a href="http://www.com/12?menu=1">menu 1-2</a></li> 8<li><a href="http://www.com/13?menu=1">menu 1-3</a></li> 9</ul> 10</li> 11<li> 12<div class="category">category2</div> 13<ul class="fxmn"> 14<li><a href="http://www.com/21?menu=2">menu 2-1</a></li> 15<li><a href="http://www.com/22?menu=2">menu 2-2</a></li> 16<li><a href="http://www.com/23?menu=2">menu 2-3</a></li> 17</ul> 18</li> 19<li> 20<div class="category">category3</div> 21<ul class="fxmn"> 22<li><a href="http://www.com/31?menu=3">menu 3-1</a></li> 23<li><a href="http://www.com/32?menu=3">menu 3-2</a></li> 24<li><a href="http://www.com/33?menu=3">menu 3-3</a></li> 25</ul> 26</li> 27</ul>

javascript

1$(function(){ 2 $("ul.fxmn").hide(); 3 $("div.category").click(function(){ 4 $("ul.fxmn").slideUp(); 5 if($("+ul",this).css("display")=="none"){ 6 $("+ul",this).slideDown(); 7 } 8 }); 9 }); 10var param = getParam('menu'); // 11if (param == 1) { 12 menu.classList.add('is-menuOpen'); 13}

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

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

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

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

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

kei344

2018/10/19 02:03

ご自身で試されたコードを質問文に追記し、「何」が「どのように」わからないのか、コードのどの部分で詰まっているのかなどを具体的に追記されたほうが回答が望めると思います。
Lhankor_Mhy

2018/10/19 02:20

リンク先がそれぞれ別ドメインになっているようですが、それらのサイト群は質問者が管理しているものですか?
Lhankor_Mhy

2018/10/24 08:18

変数 menu には何が入っていますか? また、getParam関数が定義されている部分のコードをご提示ください。
guest

回答1

0

やるべき事は

  1. URLの取得
  2. parameterの分析
  3. 分析したパラメータをメニューから探す
  4. メニューを動かす

ですかね

理解したかちょっと自信ないですが、だいたいこういう感じではないでしょうか

javascript

1<ul> 2 <li> 3 <div class="category">category1</div> 4 <ul class="fxmn"> 5 <li><a href="http://www.11?menu=1">menu 1-1</a></li> 6 <li><a href="http://www.12?menu=1">menu 1-2</a></li> 7 <li><a href="http://www.13?menu=1">menu 1-3</a></li> 8 </ul> 9 </li> 10 <li> 11 <div class="category">category2</div> 12 <ul class="fxmn"> 13 <li><a href="http://www.21?menu=2">menu 2-1</a></li> 14 <li><a href="http://www.22?menu=2">menu 2-2</a></li> 15 <li><a href="http://www.23?menu=2">menu 2-3</a></li> 16 </ul> 17 </li> 18 <li> 19 <div class="category">category3</div> 20 <ul class="fxmn"> 21 <li><a href="http://www.31?menu=3">menu 3-1</a></li> 22 <li><a href="http://www.32?menu=3">menu 3-2</a></li> 23 <li><a href="http://www.33?menu=3">menu 3-3</a></li> 24 </ul> 25 </li> 26</ul> 27 28<button onclick="javascript:doIt('http://www.11?menu=1')" >example URL : http://www.11?menu=1</button> <br> 29<button onclick="javascript:doIt('http://www.12?menu=1')" >example URL : http://www.12?menu=1</button><br> 30<button onclick="javascript:doIt('http://www.13?menu=1')" >example URL : http://www.13?menu=1</button><br> 31<button onclick="javascript:doIt('http://www.21?menu=2')" >example URL : http://www.21?menu=2</button><br> 32<button onclick="javascript:doIt('http://www.22?menu=2')" >example URL : http://www.22?menu=2</button><br> 33<button onclick="javascript:doIt('http://www.23?menu=2')" >example URL : http://www.23?menu=2</button><br> 34<button onclick="javascript:doIt('http://www.31?menu=3')" >example URL : http://www.31?menu=3</button><br> 35<button onclick="javascript:doIt('http://www.32?menu=3')" >example URL : http://www.32?menu=3</button><br> 36<button onclick="javascript:doIt('http://www.33?menu=3')" >example URL : http://www.33?menu=3</button> 37 38<script> 39$(function(){ 40 $("ul.fxmn").hide(); 41 $("div.category").click(function(){ 42 $("ul.fxmn").slideUp(); 43 if($("+ul",this).css("display")=="none"){ 44 $("+ul",this).slideDown(); 45 } 46 }); 47 }); 48 49// URLからパラメータを取得する 50function doIt(testurl) { 51 // 参考:https://stackoverflow.com/questions/1314383/how-to-check-if-a-querystring-value-is-present-via-javascript 52 var queryString = window.location.href; // URL 53 queryString = testurl // my test 54 55 var paramName = "menu"; // 区別用のパラメータ名 56 var parameterValue = getParameterFromUrl(paramName, queryString) 57 58 // a hrefの配列取得。 *sideEffectがあるかもしれないので、そこは補修しましょう 59 var els = document.querySelectorAll("a[href^='http://']"); 60 61 // menuのリンクを探りながらパラメータが一致するのを検索 62 for (var i = 0, l = els.length; i < l; i++) { 63 var el = els[i]; 64 // hrefのURLから比較用のパラメータを取得 65 var hrefParamValue = getParameterFromUrl(paramName, el.href) 66 if(parameterValue === hrefParamValue) { 67 $(el).closest('ul').slideDown() 68 } else { 69 $(el).closest('ul').slideUp() 70 } 71 } 72} 73 74// 入力したURLからパラメータを取得 75function getParameterFromUrl(paramName, urlString) { 76 var params = urlString.substring(urlString.indexOf("?")+1).split('&'); // URLからパラメータ配列分析 77 var parameterValue = ""; 78 for(var i=0; i<params.length; i++){ 79 var pair=params[i].split('='); 80 if(pair[0] === paramName && pair[1]) { 81 parameterValue = pair[1]; // 狙ってたパラメータの取得 82 } 83 } 84 return parameterValue; 85} 86</script>

イメージ説明

投稿2018/10/19 04:04

編集2018/10/19 04:43
yeondev

総合スコア198

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問