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

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

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

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

HTML

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

Q&A

解決済

3回答

2135閲覧

値がnullの時にif文が実行されない

MeB

総合スコア104

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2018/03/22 07:40

js

1$(function () { 2 var urlParam = location.search.substring(1); 3 4 if(urlParam) { 5 var param = urlParam.split('&'); 6 var paramArray = []; 7 8 for (i = 0; i < param.length; i++) { 9 var paramItem = param[i].split('='); 10 paramArray[paramItem[0]] = paramItem[1]; 11 } 12 13 if (urlParam == 'param=aaa') { 14 $('.link').append('<a href="https://text/aaa/" target="_blank"><img src="images/link_off.png" alt=""></a>'); 15 } else if (urlParam == 'param=bbb') { 16 $('.link').append('<a href="https://text/bbb/" target="_blank"><img src="images/link_off.png" alt=""></a>'); 17 } else { 18 $('.link').append('<a href="https://text/" target="_blank"><img src="images/link_off.png" alt=""></a>'); 19 } 20 console.log(urlParam); 21 } 22});

上記のコードでurlParamが
空(というか存在していない時?)の時に
最後のelseの処理が実行されません。

このような場合は
urlParamを部分をどのように記述したらよいのでしょうか?

値が入っていない時の初期をnullなどに設定しても
おそらくurlParam自体がないので実行できませんでした。

ご教示お願いします。

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

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

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

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

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

defghi1977

2018/03/22 07:53

if文が二重になっているのはなぜですか?
MeB

2018/03/22 07:57

すみません。特に理由はありません。参考にしていたサイト様がこのようになっていたからです。
defghi1977

2018/03/22 07:58

ということはあなたはコードを読んでいないということですね?
MeB

2018/03/22 08:12 編集

そういうわけではありませんが、実際解決していないので読んでいないようなものですね。失礼しました。
guest

回答3

0

urlParamが空なら、最初のif(urlParam)がtrueにならないので、こういうことでいいですかね

javascript

1 var urlParam = location.search.substring(1); 2 3 if(urlParam) { 4 var param = urlParam.split('&'); 5 var paramArray = []; 6 7 for (i = 0; i < param.length; i++) { 8 var paramItem = param[i].split('='); 9 paramArray[paramItem[0]] = paramItem[1]; 10 } 11 } 12 if (urlParam == 'param=aaa') { 13 $('.link').append('<a href="https://text/aaa/" target="_blank"><img src="images/link_off.png" alt=""></a>'); 14 } else if (urlParam == 'param=bbb') { 15 $('.link').append('<a href="https://text/bbb/" target="_blank"><img src="images/link_off.png" alt=""></a>'); 16 } else { 17 $('.link').append('<a href="https://text/" target="_blank"><img src="images/link_off.png" alt=""></a>'); 18 } 19

投稿2018/03/22 07:51

kszk311

総合スコア3404

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

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

MeB

2018/03/22 08:11

ご回答ありがとうございます!
guest

0

ベストアンサー

JavaScript

1 var urlParam = location.search.substring(1); 2 3 if(urlParam) { //←ここ

null 正確にはundefinedの判定をしているので、elseまで処理がながれません。

JavaScript

1if(urlParam === undefined) { 2 //nullの時に行いたいこと。 3 return; 4} 5//nullじゃない時に行いたいこと。

あと、IE対応をしなくてもよいなら、URLSearchParamsが使えると思います。


2018/03/23追記

コメント欄のコードから引用します。

Java

1if(urlParam === undefined) { 2 //nullの時に行いたいこと。 3 urlParam = 'null'; // ※1 4 return; // ※2 5} else if(urlParam) { // ※3 6 // 「&」が含まれている場合は「&」で分割 7 var param = urlParam.split('&'); 8 9 // パラメータを格納する用の配列を用意 10 var paramArray = []; 11 12 // 用意した配列にパラメータを格納 13 for (i = 0; i < param.length; i++) { 14 var paramItem = param[i].split('='); 15 paramArray[paramItem[0]] = paramItem[1]; 16 } 17}

※1~※3まで
どういう条件の時に何の処理を行っているかを質問者様の言葉で説明してみてくださいな。


location.search.substring(1);の戻り値はundefinedではないのですね。誤回答失礼しました。

JavaScript

1$(function (){ 2 var urlParam = location.search.substring(1); 3 if(urlParam == '') { 4 $('.link').append('<a href="https://text/" target="_blank"><img src="images/link_off.png" alt=""></a>'); 5 return; 6 } 7 // 「&」が含まれている場合は「&」で分割 8 var param = urlParam.split('&'); 9 // パラメータを格納する用の配列を用意 10 var paramArray = []; 11 12 // 用意した配列にパラメータを格納 13 for (i = 0; i < param.length; i++) { 14 var paramItem = param[i].split('='); 15 paramArray[paramItem[0]] = paramItem[1]; 16 } 17 if (urlParam == 'param=aaa') { 18 $('.link').append('<a href="https://text/aaa/" target="_blank"><img src="images/link_off.png" alt=""></a>'); 19 } else if (urlParam == 'param=bbb') { 20 $('.link').append('<a href="https://text/bbb/" target="_blank"><img src="images/link_off.png" alt=""></a>'); 21 } 22 console.log(urlParam); 23});

お詫びついでにURLSearchParamsを使ったコード&rel="noopener"を追加したコードをおいておきます。
失礼しました。

JavaScript

1$(function (){ 2 var searchParams = new URLSearchParams(location.search); 3 // target _blankで開くリンクはrel="noopener"を付けると安全になります。 4 if (!searchParams.has('param')) { 5 $('.link').append('<a href="https://text/" target="_blank" rel="noopener"><img src="images/link_off.png" alt=""></a>'); 6 return; 7 } 8 sub_dir = searchParams.get("param"); 9 $('.link').append('<a href="https://text/' + sub_dir + '/" target="_blank" rel="noopener"><img src="images/link_off.png" alt=""></a>'); 10});

投稿2018/03/22 07:58

編集2018/03/23 02:24
umyu

総合スコア5846

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

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

MeB

2018/03/22 08:10 編集

null認識を間違えていました。 ありがとうございます!!!
MeB

2018/03/23 01:33

解決済みのあとで申し訳ございません。 if(urlParam === undefined) { //nullの時に行いたいこと。 urlParam = 'null'; return; } else if(urlParam) { // 「&」が含まれている場合は「&」で分割 var param = urlParam.split('&'); // パラメータを格納する用の配列を用意 var paramArray = []; // 用意した配列にパラメータを格納 for (i = 0; i < param.length; i++) { var paramItem = param[i].split('='); paramArray[paramItem[0]] = paramItem[1]; } } このようにしてみたのですが、コンソール上ではエラーのままです… このような書き方ではないのでしょうか? よろしくお願いします。
MeB

2018/03/23 02:27 編集

if(urlParam === undefined) { //nullの時に行いたいこと。 urlParam = 'null'; // nullという文字列を入れる return; //関数内の処理終了?(すみません。これはよく把握しておりませんでした。勉強します) } else if(urlParam) { // urlParamに値があった場合は この程度しか把握しておりません。
MeB

2018/03/23 02:27

あ、すみません。色々かぶってしまいました…
MeB

2018/03/23 02:31

1行1行説明できるように勉強していきたいと思います。 この度は本当にありがとうございます!!!
umyu

2018/03/23 02:31

>MeBさんへ returnは関数の終了処理なので、後続の処理に流れないのです。私が言いたかったことはurlParam にnullを設定しても、returnしているので、後続の処理に流れないと言うことです。 回答部分に追記した追加コードの1個目のコードが質問文にできるだけ合わせた形の回答で、下の回答がURLSearchParamsを使った回答です。
MeB

2018/03/23 03:16

returnの件ありがとうございます。 わざわざ質問文に寄せてくださりありがとうございます。
guest

0

まず、その変数がnullかどうかを判断してその処理を書きます

投稿2018/03/22 07:45

y_waiwai

総合スコア87774

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問