前提・実現したいこと
クエリパラメータで受け取った値を元にjavascripitで条件分岐表示をしたいと考えています。
具体的には、以下のようにaタグのhrefの中に「?id=〇〇」といったような形でクエリパラメータを与えています。
php
1<div class="state col-md-4 col-sm-12"> 2<p>シドニー</p> 3<a href="/state/nsw/sydney?id=1"><img src="/img/towns/sydney.jpg" width=100% height=100%></img></a> 4</div> 5<div class="state col-md-4 col-sm-12"> 6<p>ニューカッスル</p> 7<a href="/state/nsw/sydney?id=2"><img src="/img/towns/newcastle.jpg" width=100% height=100%></img></a> 8</div>
どのような記述にすれば、hrefのクエリパラメータの値を受け取って、遷移したページ先で条件分岐ができるでしょうか?
発生している問題・エラーメッセージ
リンク先のscriptタグ内で、クエリパラメータの「id=〇〇」の「〇〇」だけを取得して、if文で「〇〇」の値ごとに表示するgoogle map APIの表示位置を変えようとしているのですが、
Uncaught SyntaxError: Unexpected token else
のエラーが表示されます。(ソースコード①)
またelse文の箇所を消し、if文のみにすると以下のように他の箇所が引っかかってしまいます。(ソースコード②)
Uncaught SyntaxError: Unexpected identifier
ソースコード②の場合はif文の外に「zoom:10」があることが引っかかっている要因かと思い、以下のように変えると(ソースコード③)エラーメッセージは出ないのですが、マップが以下のように枠のみの表示となってしまいます。
またdocument.writeを外し、else文をコメントアウトして見ると
Uncaught SyntaxError: Unexpected token :
といったようなエラーメッセージが表示されます。(ソースコード④)
該当のソースコード
<script>内で定義したクエリパラメータ「?id=〇〇」の「〇〇」のみを取得するfunctionの定義と、「〇〇」の定義 ```php function getParam(name, url) { if (!url) url = window.location.href; name = name.replace(/[[]]/g, "\$&"); var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), results = regex.exec(url); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/+/g, " ")); } var id = getParam('id'); ``` ソースコード① ```php map = new google.maps.Map(document.getElementById('map'), { if(id = 1) { document.write("center: {lat: -33.848463912396205, lng: 151.15784284135657},"); }else{ document.write("center: {lat: -33.848463912396205, lng: 151.15784284135657},"); } zoom: 10 }); ``` ソースコード② ```php map = new google.maps.Map(document.getElementById('map'), { if(id = 1) { document.write("center: {lat: -33.848463912396205, lng: 151.15784284135657},"); // }else{ // document.write("center: {lat: -33.848463912396205, lng: 151.15784284135657},"); } zoom: 10 }); ``` ソースコード③ ```php map = new google.maps.Map(document.getElementById('map'), { if(id = 1) { document.write("center: {lat: -33.848463912396205, lng: 151.15784284135657},zoom: 10"); // }else{ // document.write("center: {lat: -33.848463912396205, lng: 151.15784284135657},"); } }); ``` ソースコード④ ```php if(id = 1) { center: {lat: -33.848463912396205, lng: 151.15784284135657}, // }else{ // document.write("center: {lat: -33.848463912396205, lng: 151.15784284135657},"); } zoom: 10 }); ```回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/03 02:57
2019/05/03 02:59