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

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

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

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

979閲覧

クエリパラメータで受け取った値を元にjavascripitで条件分岐表示をしたい

HirakuMorishima

総合スコア29

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2019/05/03 01:32

前提・実現したいこと

クエリパラメータで受け取った値を元に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 }); ```

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

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

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

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

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

guest

回答1

0

ベストアンサー

google.maps.MapOptionsはオブジェクトなので、オブジェクトの文法で書いてください。
オブジェクト初期化子 - JavaScript | MDN
大雑把に言うと、↓こういうことです。

js

1{ 2 key: value, 3 ... 4}

keyは識別子、valueはである必要があるので、であるifは書けません。

解決方法ですが、google.maps.Mapのインスタンス作成とif文を切り離すことです。

js

1 if(id = 1) { 2 center = {lat: -33.848463912396205, lng: 151.15784284135657}; 3... 4 5 map = new google.maps.Map(document.getElementById('map'), { 6 center: center, 7 zoom: 10 8 });

あとは、三項演算子で書く方法もあるかと思いますが、可読性が悪くなりそうな気もしますね。

蛇足

URL.searchParams - Web API | MDN

投稿2019/05/03 02:09

編集2019/05/03 02:16
Lhankor_Mhy

総合スコア36080

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

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

HirakuMorishima

2019/05/03 02:57

コメントありがとうございます! アドバイス通りに行ったところ、エラーが解消されました。 また補足でいただいたserchParamsについても反映したところ、コードの可視性が向上しました。ありがとうございます。 var centerがなぜかidによって分岐しないのですが、こちらは趣旨がズレるため別の質問にしたいと思います。 ありがとうございました。
Lhankor_Mhy

2019/05/03 02:59

それは、代入=と、比較==とを混同しているからです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問