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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

Q&A

解決済

2回答

2129閲覧

ボタンを押すと実行結果ではなく”undefined”と表示される

aoi68

総合スコア9

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

0グッド

0クリップ

投稿2020/11/05 16:48

編集2020/11/06 02:33

簡単なおみくじアプリを作っています。
pタグの要素を取得して、pタグの中身を配列の文字列に書き換えるプログラムを作ったのですが、『運勢を占う』ボタンを押してもundefinedと出てしまいます。そのまま配列の要素を表示させるにはどうすれば良いのでしょうか?ご指摘お願いします。

javascript <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="omikuji.css"> <title>omikuji</title> </head> <body> <h1 class="tytle">おみくじ</h1> <p class="p">あなたの運勢は・・・</p> <div class="box2"> <p id="luck"></p> </div> <div class="button"> <button type="button" onclick="luck_draw()">運勢を占う</button> </div> <script> //運勢一覧 const luck = ["大吉","中吉","小吉","末吉","吉","凶","大凶"]; function luck_draw() { const luck = document.getElementById('luck'); luck.innerText = luck[Math.floor(Math.random * luck.length)]; } </script> </body> </html>
css .tytle { font-size: 100px; text-align: center; padding-bottom: 30px; } .button { text-align: center; } .p { text-align: center; } .box2 { padding: 0.5em 1em; margin: 10px 300px; font-weight: bold; color: #6091d3;/*文字色*/ background: #FFF; border: solid 3px #6091d3;/*線*/ border-radius: 10px;/*角の丸み*/ font-size: 100px; text-align: center; } .box2 p { margin: 0; padding: 0; }

実際のおみくじ画像

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

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

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

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

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

m.ts10806

2020/11/05 23:04

>おみくじアプリのエラー 今回の現象はいわゆる「エラー」ではないので、タイトル改めたほうが良いかと思います。
aoi68

2020/11/06 02:19

ご指摘ありがとうございます。編集して直させていただきました。
m.ts10806

2020/11/06 02:22

バグとか不具合とかもあまりしっくりこないですね(結局書いたとおりに動くので) そのまま「ボタンを押すと実行結果ではなく”undefined”と表示される」のほうが「要件」としては正確かと思います。 何か言いたいかというと、同じアプリを作っていて問題がでたときにまた「おみくじアプリのバグ」としてしまうとタイトルが同じになるので何が問題だったか分かりにくくなります。
aoi68

2020/11/06 02:33

了解しました。編集して直させていただきました。
guest

回答2

0

ベストアンサー

配列の

const luck = ["大吉","中吉","小吉","末吉","吉","凶","大凶"];

と変数の

const luck = document.getElementById('luck');

のどちらにも同じluckという名前を使っているのは良くないです。片方の名前を変えて、どっちがどっちなのかを識別できるようにしましょう。それから、変数のluckの方はluck.innerTextに後から値を入れ直すので、constではなくletで宣言した方がよいと思います。

下記のような感じですかね。

<script> //運勢一覧 const luck = ["大吉","中吉","小吉","末吉","吉","凶","大凶"]; function luck_draw() { let luckResult = document.getElementById('luck'); luckResult.innerText = luck[Math.floor(Math.random * luck.length)]; } </script>

投稿2020/11/05 20:06

Sean2014

総合スコア59

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

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

aoi68

2020/11/06 02:37

今回はありがとうございました。確かに変数名が被っていました、、気づかなかったです。letとconstの使い分けについてはもう一度勉強しなおそうと思います。それと、Math.randomに()がついていなかったので、それも直したらちゃんと動いてくれたのでよかったです。
Sean2014

2020/11/06 09:12

無事問題解決できたようで良かったです!????
guest

0

変数名が配列も要素もluckなので名前を変える。

投稿2020/11/05 16:50

kei344

総合スコア69458

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問