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

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

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

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

JavaScript

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

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

解決済

4回答

2056閲覧

[monaca]javascriptで記載したpromptの条件分岐がデバッガーの動作確認でうまく動かないです。

fun_study_pro

総合スコア5

HTML5

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

JavaScript

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

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

1グッド

2クリップ

投稿2020/03/17 03:11

編集2020/03/18 03:56

前提・実現したいこと

promptを用いたときの表示と条件分岐が正しく動くようにしたいです。

alertの「答えが違います!」が最初に表示されOKをクリックすると、先に表示したい「888÷8は何ですか?」が表示されます。
また、「888÷8は何ですか?」が表示されたあと、「111」を入力してOKをクリックしてもjumpPageが動きません。

基本的なことで恐縮ですがご教示ください。

該当のソースコード

html

1function Alert(){ 2 var sign = window.prompt("888÷8は何ですか?",""); 3 if (sign == "111"){jumpPage();} 4 else {alert("答えが違います!");} 5} 6function jumpPage(){ 7 location.href="../index.html"; 8} 9

情報の追加依頼を受けての追記

ご指摘をもとに先の質問に該当する部分を再入力したところ、promptによるダイアログ表示の前にjumpPage_pが発生し、index.htmlの表示と同時にpromptのダイアログが表示されるという状況になっています。
以下、追記のソースコードです。
(追記の仕方をはじめとして、おかしな部分もあると思いますが、ご容赦ください)

該当のソースコード

html

1<!DOCTYPE html> 2 <html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5<title>e-learning</title> 6<link rel="stylesheet" href="ele.css"> 7<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> 8</head> 9 10<body onload="sentaku();"> 11 <audio id="sentaku" preload="auto"> 12 <source src="sound/girl1-sentakushite1.mp3" controls> 13 </audio> 14<audio id="tenkeySound0" preload="auto"> 15 <source src="sound/decision1_2.mp3" controls> 16 </audio> 17 18<h1 class="title1" id="title">わわわ<br>わわわわわわ</h1> 19<div class="W1" ontouchstart=""> 20 21<button class="button1" ontouchstart="tenkeySound0();"> 22<i class="material-icons">school</i><br>あいあい</button> 23 24<button class="button2" ontouchstart="tenkeySound1();"> 25<i class="material-icons">account_circle</i><br>かいかい</button> 26 27<button class="button3" ontouchstart="tenkeySound2();"> 28<i class="material-icons">attach_file</i><br>さいさい</button> 29 30</div> 31<script> 32 function sentaku(){ 33 document.getElementById("sentaku").play(); 34 var sentaku = document.getElementById("sentaku"); 35 sentaku.volume = 0.8; 36 sentaku.currentTime = 0; 37 sentaku.playbackRate = 1.0; 38} 39function tenkeySound0(){ 40 document.getElementById("tenkeySound0").play(); 41 var tenkeySound0 = document.getElementById("tenkeySound0"); 42 tenkeySound0.volume = 0.1; 43 tenkeySound0.currentTime = 0; 44 tenkeySound0.playbackRate = 1.2; 45 setTimeout("jumpPage_y();",1000); 46} 47function tenkeySound1(){ 48 document.getElementById("tenkeySound0").play(); 49 var tenkeySound0 = document.getElementById("tenkeySound0"); 50 tenkeySound0.volume = 0.1; 51 tenkeySound0.currentTime = 0; 52 tenkeySound0.playbackRate = 1.2; 53 Alert(); 54} 55function tenkeySound2(){ 56 document.getElementById("tenkeySound0").play(); 57 var tenkeySound0 = document.getElementById("tenkeySound0"); 58 tenkeySound0.volume = 0.1; 59 tenkeySound0.currentTime = 0; 60 tenkeySound0.playbackRate = 1.2; 61 setTimeout("jumpPage_g();",1000); 62} 63function jumpPage_y(){ 64 location.href='menu.html'; 65} 66function Alert(){ 67 var sign=window.prompt("888÷8は何ですか?",""); 68 if(sign=="111"){jumpPage_p();} 69 else{alert("答えが違います!");} 70} 71function jumpPage_p(){ 72 location.href="../index.html"; 73} 74function jumpPage_g(){ 75 location.href='stamp.html'; 76} 77</script> 78 79</body> 80</html>
DrqYuto👍を押しています

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

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

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

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

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

miyabi_takatsuk

2020/03/17 04:17 編集

yambejpさんの回答で解決されなかったということで、他の部分が原因かもしれません。 JSの他の部分も、なるたけ全文を記載いただけませんか??
fun_study_pro

2020/03/17 04:27

ご依頼に基づき、追記、編集を行いましたm(_ _)m
miyabi_takatsuk

2020/03/17 04:38

promptの部分、当初のコードと微妙に違いますね・・・。 var をつけるかつけないかの違いですが、 つけないと、グローバル変数を参照しようとするので、 それで、その後行のif ()構文が先に動いている可能性もあるかと思います。 後者の原文にも、var を頭につけてみてください。 それでもダメなら、またコメントください。 また、言い忘れてすみません。 ソースコードは、コードブロックを使って見やすいように記載お願いします。 ```言語名 ここにソースコードを記載 ``` という形式です。 (言語名のところは、今回の場合は、htmlですね)
miyabi_takatsuk

2020/03/17 04:40

key344さんの回答にもある通り、==に直すのもお忘れなく。
fun_study_pro

2020/03/17 04:48

ご指摘をもとに現在の最新状態のソースコードでコードブロックを用いたものにいたしましたm(_ _)m
Yousuck

2020/03/17 09:25

ご提示のソース通りでしたらyambejpさんの回答にもある通り、特に問題ないようなので 検証をブラウザで行っているのでしたら、一度キャッシュをクリアされるかシークレットモード(プライベートモード)にするなどしてみて検証されてみてはいかがでしょうか。
AkitoshiManabe

2020/03/17 11:18

> 情報の追加依頼を受けての追記 ページ遷移後のHTMLについて、「別の問題」が浮上しているように思います(ご質問のタイトルとは異なる問題を提示されています)。 ご質問タイトルの「prompt() の結果をifで切り分ける問題」は解決されていませんか?
fun_study_pro

2020/03/18 03:30

ご返信遅くなり失礼いたしました。 「prompt() の結果をifで切り分ける問題」は未解決の状態です。
miyabi_takatsuk

2020/03/18 03:39

解決しませんか・・・。 何度も修正依頼すみませんが、 問題が起きている、対象ブラウザ、記載していただけませんか?
fun_study_pro

2020/03/18 03:44

google chromeです。 (蛇足かもしれませんが開発環境はmonacaです)
miyabi_takatsuk

2020/03/18 03:50

蛇足じゃなくて、めちゃくちゃ重要な情報です、それ。 monacaは、最終がアプリなどにコンパイルするため、オンラインツールなので、通常のブラウザと挙動が変わる可能性がかなり高いです。 本問題は、monacaのコンパイル後ですか?それとも、開発段階で問題おきますか? なんにせよ、monacaであることは質問に記載しなければ問題解決はほぼ不可能です。
miyabi_takatsuk

2020/03/18 03:52

質問タグにも、monacaを追加して下さい。
fun_study_pro

2020/03/18 03:52

大切な情報が後出しになり申し訳ございませんでした。 開発段階でデバッガーを用いての挙動確認で発生しております。
miyabi_takatsuk

2020/03/18 03:53

質問にその旨記載下さい。 質問タグ追加もお忘れなく。
fun_study_pro

2020/03/18 03:57

ご指摘を受けて追加、編集を行いましたm(_ _)m
miyabi_takatsuk

2020/03/18 04:07 編集

何度もありがとうございます。 もう一点、、、多分これが最後です。 最終はアプリに書き出す予定ですか?? もし、そうでなく、Webページを開発するつもりなら、わざわざMonaca使うことはないと思います。
fun_study_pro

2020/03/18 04:12

スマホ、タブレット用のアプリの予定です。
miyabi_takatsuk

2020/03/18 04:17

ありがとうございます。 回答致しました。
guest

回答4

0

とくに問題あるようには見えません
「111」の入力が全角でしてしまっているとかその手の凡ミスでは?

投稿2020/03/17 03:23

yambejp

総合スコア116724

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

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

fun_study_pro

2020/03/17 03:36

早速のご回答ありがとうございます。 どこかに全角スペース等が混じっている可能性があるので、再度入力して試してみたいと思いますm(_ _)m
退会済みユーザー

退会済みユーザー

2020/03/17 03:47

プロンプトへの入力が「111」ではなく「111」を入力したのではってことでは?
fun_study_pro

2020/03/17 03:55

ご指摘をもとに確認したところ「111」は半角での入力でした。 ソースをコピペで一部用いたため、気づかぬところに全角スペースが混じっていて、promptをスルーしてelseのalertが表示されたのでは、と考えての回答でした(言葉足らずですみません)。
guest

0

js

1// if(sign="111") 2// ↓ 3 if(sign=="111")

投稿2020/03/17 04:36

kei344

総合スコア69606

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

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

fun_study_pro

2020/03/17 04:38

失礼いたしました。 「==」にしたところ、追記前の質問と同様の状態になっております。
fun_study_pro

2020/03/17 04:55

ありがとうございます。 ご教授くださったデベロッパーツールでifの確認を行ってみたいと思いますm(_ _)m
guest

0

該当のソースコードにお間違いはないでしょうか?
例えば下記のように、Alert()内のif文と変数signの記述順を逆にしているとか。。
※下記なら、質問者さんが仰る通りの挙動が再現されます。
※すみません、こちらの回答は追記前のものとなります。

function Alert(){ if (sign == "111"){jumpPage();} else {alert("答えが違います!");} var sign = window.prompt("888÷8は何ですか?",""); } function jumpPage(){ location.href="../index.html"; }

投稿2020/03/17 04:26

編集2020/03/17 04:31
Yousuck

総合スコア349

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

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

0

ベストアンサー

Monacaに、promptの処理にバグがあるかは記事が見当たらなかったのですが、
Monacaにおいてのダイアログ処理に関しては、下記のリンクのようにするようです。

ダイアログの制御 プラグイン | Monaca Docs

最終のコンパイルが、
アプリのネィティブになるからか、JavaScriptそのままでは上手く動かせないため、こういったものがちょいちょいあるのかと思われます。

投稿2020/03/18 04:14

編集2020/03/18 04:17
miyabi_takatsuk

総合スコア9555

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

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

fun_study_pro

2020/03/18 04:28

ご回答ありがとうございます。 確認させていただきますm(_ _)m
fun_study_pro

2020/03/20 20:52

今回は既にリリース済みのアプリで質問の他にも広告の挙動の修正等の重要な部分を含んでおり、早急なアップデートが必要だったため、応急処置として、promptと同じような動きをするページを作成することで対応いたしました。 無事アップデートが完了した後にいただいたリンクをじっくり確認させていただきます。 ご回答くださった皆様、本当にありがとうございましたm(_ _)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問