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

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

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

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

Q&A

解決済

2回答

1541閲覧

ランダムで選択された中身を取得したい

satoko

総合スコア17

JavaScript

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

0グッド

0クリップ

投稿2017/10/12 04:06

###前提・実現したいこと
javascriptのアラートで、定義したランダムの中身を取得したいです。
なんと説明すればいいかわからないですが、
定義→ランダム選択→取得→表示の流れを作りたいのですが、アラートで取得するとundefindと表示されてしまいます。

function yaruki(){ //どこをトレースするかの定義 var HEADER = 1; var GNAVI = 2; var CNTENTS = 3; var FOOTER = 4; //トレースをランダムで選択 function trace(){ return Math.floor(Math.random() *4 ) +1; } // トレースの名前を取得 function getTrace(list){ switch (list) { case HEADER: return 'ヘッダー' break; case GNAVI: return 'Gナビ' break; case CONTENTS: return 'コンテンツ' break; case FOOTER: return 'フッター' break; } } } yaruki();

と、ここまで書いたのですが、このあとの
・結果の取得
・アラートでの表示
がコードをどう書けばよいかわからないです。

このあとにどう書いて行けばよろしいかご教授願えませんでしょうか?
よろしくお願い致します。

###試したこと
switch文のあとにalert(getTrace(list));を入れてみたりしましたがundefindでした。

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

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

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

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

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

guest

回答2

0

ベストアンサー

こういうことでしょうか。
誤記がいくつかありましたので、合わせて修正しています。
console.logalertに変更すればポップアップになるかと思います。

javascript

1function yaruki() { 2 //どこをトレースするかの定義 3 var HEADER = 1; 4 var GNAVI = 2; 5 var CONTENTS = 3; 6 var FOOTER = 4; 7 8 //トレースをランダムで選択 9 function trace(){ 10 return Math.floor(Math.random() *4 ) +1; 11 } 12 13 // トレースの名前を取得 14 function getTrace(list){ 15 switch (list) { 16 case HEADER: 17 return 'ヘッダー'; 18 case GNAVI: 19 return 'Gナビ'; 20 case CONTENTS: 21 return 'コンテンツ'; 22 case FOOTER: 23 return 'フッター'; 24 default: 25 return '該当なし'; 26 } 27 } 28 return getTrace(trace()); 29} 30 31for (i = 0; i < 10; i++) { 32 console.log(yaruki()); 33}

投稿2017/10/12 04:15

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

satoko

2017/10/12 04:29

ありがとうございます! 思うような動きになりました。 ただひとつ解説してほしいことがありまして、 どうすれば数字で表示されずに、名前で表示されるのかがピンと来ないのです。 return getTrace(trace()); の部分で、getTraceとtraceの部分を照らし合わせてるという、認識でよろしいのでしょうか? 仮にそうだとしたら、そうなる理屈を教えて頂きたいのです。 勝手な追加の質問で申し訳ありませんが、ご教授願えませんでしょうか?
退会済みユーザー

退会済みユーザー

2017/10/12 04:35

trace()を実行すると、1から4までの数字が乱数をもとに返却されます。 ここは問題ないでしょうか。 次にgetTrace(list)のlistへの引数として、上記のtrace()の結果(1~4)を渡しています。 getTraceでは、引数として渡されたlistの数値をswitch文にて判断して対応する文字列を返却しています。 「case 1:」はlistの値が1だった場合、「case 2:」はlistの値が2だった場合です。 これによって、ランダムな文字列がgetTrace(trace())の最終出力として得られます。
satoko

2017/10/12 04:55

引数(list)に上記のtrace()の数字の結果を入れて、渡している、という認識でよろしいのでしょうか? それをgetTrace(list)で数字を文字列に変換して、returnで「trace()で出た数字をgetTrace()で文字列変換している」ということでしょうか? 引数の性質があやふやな認識で申し訳ありません。。。。
退会済みユーザー

退会済みユーザー

2017/10/12 05:03

分けて考えるといかがでしょうか。 var randomNumber = trace(); // 1~4がrandomNumberに入る var resultString = getTrace(randomNumber); // 引数に応じた文字列がresultStringに入る getTraceが呼ばれた時は、呼び出し元から引数を1つ受けとり、その名前はlistという名前で参照できます。 returnは呼び出し元に値を返却します。呼び出し元で代入処理を行っていれば、結果は変数に入ります。
satoko

2017/10/12 05:30

納得しました! returnの処理内容としては getTrace(4)//trace()で得た戻り値を代入、listを参照し、最終的に返ってくるのが"フッター" という処理をしているってことですね! 別々に考えるととてもわかりやすいです。 引数listはあくまでも参照するためのもの、ってことですね。 長々大変失礼しました。 勉強になりました。ありがとうございます!
guest

0

CONTENSにtypoがありますね

javascript

1var HEADER = 1; 2var GNAVI = 2; 3var CONTENTS = 3; 4var FOOTER = 4; 5 6function trace(){ 7 return Math.floor(Math.random() *4 ) +1; 8} 9function getTrace(list){ 10 switch (list) { 11 case HEADER: 12 return 'ヘッダー' 13 break; 14 15 case GNAVI: 16 return 'Gナビ' 17 break; 18 19 case CONTENTS: 20 return 'コンテンツ' 21 break; 22 23 case FOOTER: 24 return 'フッター' 25 break; 26 } 27} 28console.log(getTrace(trace()));

投稿2017/10/12 04:14

yambejp

総合スコア114572

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問