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

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

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

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

Q&A

解決済

3回答

2217閲覧

prompt関数を用いる際のエラー

oxyu8

総合スコア23

JavaScript

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

1グッド

1クリップ

投稿2019/05/14 05:20

編集2019/05/14 05:58

javascriptでprompt関数を用いて、ダイヤログを表示させたいのですが、実行時にエラーが発生します。

main.js

const input = prompt('今日の天気は?次の3つのうち、いずれかの文字列を入力してくささい。(晴れ or くもり or 雨)'); if (input === '晴れ') { alert('今日は気持ちの良い一日になりそうですね!'); } else if( input === 'くもり') { alert('どんよりした天気ですが今日も一日がんばりましょう!'); } else if( input === '雨') { alert('家でゆっくり過ごすのも良いと思いますよ!'); } else { alert('晴れ・くもり・雨以外の文字列には対応していません。'); }

index.html

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>【エクササイズ】入力内容に応じてalertメッセージを切り替える</title> </head> <body> <script src="main.js"></script> </body> </html>

以下がエラーです。

ReferenceError: prompt is not defined at Object.<anonymous> (/home/yuya/Desktop/programming/javascript/js_excercise_for_grammer_2/main.js:1:77) at Module._compile (internal/modules/cjs/loader.js:738:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:749:10) at Module.load (internal/modules/cjs/loader.js:630:32) at tryModuleLoad (internal/modules/cjs/loader.js:570:12) at Function.Module._load (internal/modules/cjs/loader.js:562:3) at Function.Module.runMain (internal/modules/cjs/loader.js:801:12) at internal/main/run_main_module.js:21:11

エディタはVScodeを使用しています。
よろしくお願いします

DrqYuto👍を押しています

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

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

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

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

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

miyabi_takatsuk

2019/05/14 05:24

この構文を実行している、HTMLコード、ブラウザ、ブラウザのバージョンを記載してください。 ブラウザによっては、prompt自体が使えない場合があります。
oxyu8

2019/05/14 05:34

ブラウザはgooglechromeで、バージョンはバージョン: 73.0.3683.103(Official Build) (64 ビット)でした。 htmlコードは以下のとおりです <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>【エクササイズ】入力内容に応じてalertメッセージを切り替える</title> </head> <body> <script src="main.js"></script> </body> </html>
miyabi_takatsuk

2019/05/14 05:42

なんと・・・。 Chromeで動かないんですか。 エラーの内容は、prompt自体が存在しない、というエラーになります。 Chromeで、そんなことはありえないはずなのですが。 main.jsの中身も、質問文本文に追記していただけませんか? 質問文編集画面にて、<code>ボタンを押すと、ソースコードを記載するための文字が挿入されるので、それを使ってソースコードを記載してください。 HTMLも同様にお願いします。
oxyu8

2019/05/14 05:58

編集しておきました!
miyabi_takatsuk

2019/05/14 06:12

追記ありがとうございます。 もしや、なんか、JavaScriptフレームワークとか使ってます? main/run_main_module.jsなどと出ているので、何か使ってますよね? もしそうならば、フレームワーク上のpromptメソッドを参照している可能性があります。 であれば、フレームワークによりますが、フレームワークの処理の中でpromptを使う必要があります。
oxyu8

2019/05/14 06:14

回答ありがとうございます。 少し調べてみます。
miyabi_takatsuk

2019/05/14 06:18

調べてもわからなかった場合、本質問にて、タグに、使用しているフレームワークも追加してください。 javascriptとHTMLだけでは、このような現象はおきませんし、情報が足りなく、回答を得られないかと思います。
oikashinoa

2019/05/14 09:19 編集

<script src="main.js"></script> ↑の行を消した状態でエラーが変わるか切り分けしたほうが良くないですか? main.jsでwindow.promptもしくはwindowを無効化してあるのかも。
miyabi_takatsuk

2019/05/14 09:21

okikashinoaさん>それだ・・・!ありがとうございます。質問者さん、いかがでしょうか?
otn

2019/05/14 12:06

ブラウザで、index.html を表示させたときのエラーでしょうか?なんか、違うことをやってそうな気がします。
oikashinoa

2019/05/14 23:09 編集

↑x2の私の記載。 main.jsは、ここに記載していただいたコードが全て で有れば、私の回答はまと違いですね。 main.jsの内容をhtmlに直書きして切り分けしてはいかがですか?
guest

回答3

0

たぶん関係ないとは思いますが
「window.prompt」でも同じですかね?
念の為promptは引数を2つ指定してください(2つめにデフォルト値)

投稿2019/05/14 05:44

yambejp

総合スコア114839

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

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

oxyu8

2019/05/14 06:00

window,promptにするとReferenceError: window is not definedというエラーがおきました。
yambejp

2019/05/14 06:24

> window,promptにすると 「window.prompt」でも同じですか?(カンマじゃなくてピリオド)
oxyu8

2019/05/14 06:28

すみません。打ち間違えです。 コードはwindow.promptで書きましたが、上記のエラーがおきました。
guest

0

const input = prompt('今日の天気は?次の3つのうち、いずれかの文字列を入力してくささい。(晴れ or くもり or 雨)');

var input = prompt('今日の天気は?次の3つのうち、いずれかの文字列を入力してくささい。(晴れ or くもり or 雨)');

に変えたら、解決すると思います。

inputは定数(const)と定義されているので、そこに入る値(右辺)は実行前(コンパイル時)に定まっている必要があります。
ところが、prompt関数はキーボードからの入力を返すもものなので実行時にしか値が定まりません。

==
余談
==
windows.promptは、バッチやコマンドプロンプトで有効な関数です。
Javascriptにwindows.prompt関数はありません。

投稿2019/05/14 07:10

coco_bauer

総合スコア6915

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

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

maisumakun

2019/05/14 07:14

JavaScriptのconstは、コンパイル時に値が決まる必要はありません。「それ以降に変数の中身を入れ替えられない」だけです。 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/const (代入するものは「正当な 式 なら、どんなものでもかまいません。」) ブラウザにもwindow.promptはあります(JavaScriptではない、といえばそうかもしれませんが)。 https://developer.mozilla.org/ja/docs/Web/API/Window/prompt
miyabi_takatsuk

2019/05/14 07:39

ブラウザ上での話と、バッチやフレームワークの話とごっちゃになってますね。 確かに、プラットホームによってはwindowオブジェクトないかもですが。
guest

0

ベストアンサー

index.htmlをブラウザで開いているのではなくて、VSCodeでmain.jsを実行してませんか?

記載されるコードはブラウザでアクセスした際に、ブラウザ上で動作するものです。
「エラーの内容」というのも、ブラウザのconsoleタブに出たものではなくて、
VSCodeのデバッグコンソールの事をいってないでしょうか。

投稿2019/05/14 11:59

Eggpan

総合スコア2727

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問