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

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

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

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

Q&A

1回答

656閲覧

答え合わせを行う関数anserを用いて、テキストフォームに入力、送信された値を関数anserの引数に持たせてanserを実行したい。

k130

総合スコア22

JavaScript

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

0グッド

0クリップ

投稿2020/04/10 02:52

編集2021/05/20 05:38

前提・実現したいこと

記述式一応の完成を見たが、コードをスマートにしたい、具体的には、
document.a1.answer.valueの値が入っているかどうかで分岐させたいが、
if (!empty(document.a1.answer.value)) {
がなぜかできない。
提示したソース(選択式)を記述式にする事には成功した。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

エラーもしくは思うように動かない。

該当のソースコード

javascript

1<!DOCTYPE HTML> 2<html> 3<head> 4<meta charset="utf-8"> 5<title>三択クイズ</title> 6</head> 7<body> 8<h1>三択クイズ</h1> 9<hr> 10<h2>問題</h2> 11<div id="text_q"></div> 12<h2>選択</h2> 13<div id="text_s"></div> 14<h2>解答</h2> 15<div id="text_a"></div> 16<script type="text/javascript"> 17//問題と解答 18qa = new Array(); 19qa[0] = ["イルカを漢字で書くとどれ?","海豚","海牛","河豚",1]; 20qa[1] = ["クラゲを漢字で書くとどれ?","水浮","水母","水星",2]; 21qa[2] = ["カタツムリを漢字で書くとどれ?","禍牛","鍋牛","蝸牛",3]; 22qa[3] = ["バッタを漢字で書くとどれ?","飛蝗","飛蟻","飛脚",1]; 23qa[4] = ["タツノオトシゴを英語にするとどれ?","sea fish","sea horse","sea dragon",2]; 24qa[5] = ["マグロを英語にするとどれ?","funa","suna","tuna",3]; 25qa[6] = ["トンボを英語にするとどれ?","fly","dragonfly","butterfly",2]; 26qa[7] = ["ヒトデを英語にするとどれ?","starfish","starshell","starmine",1]; 27qa[8] = ["恒星の中で最も明るい星は?","デネブ","スピカ","シリウス",3]; 28qa[9] = ["惑星の中で最も重たいのはどれ?","太陽","木星","天王星",2]; 29//初期設定 30q_sel = 3; //選択肢の数 31setReady(); 32//初期設定 33function setReady() { 34 count = 0; //問題番号 35 ansers = new Array(); //解答記録 36 37 //最初の問題 38 quiz(); 39} 40//問題表示 41function quiz() { 42 var s, n; 43 //問題 44 document.getElementById("text_q").innerHTML = (count + 1) + "問目:" + qa[count][0]; 45 //選択肢 46 s = ""; 47 for (n=1;n<=q_sel;n++) { 48 s += "【<a href='javascript:anser(" + n + ")'>" + n + ":" + qa[count][n] + "</a>】"; 49 } 50 document.getElementById("text_s").innerHTML = s; 51} 52//解答表示 53function anser(num) { 54 var s; 55 s = (count + 1) + "問目:"; 56 //答え合わせ 57 if (num == qa[count][q_sel + 1]) { 58 //正解 59 ansers[count] = "○"; 60 } else { 61 ansers[count] = "×"; 62 } 63 s += ansers[count] + qa[count][num]; 64 document.getElementById("text_a").innerHTML = s; 65 66 //次の問題を表示 67 count++; 68 if (count < qa.length) { 69 quiz(); 70 } else { 71 //終了 72 s = "<table border='2'><caption>成績発表</caption>"; 73 //1行目 74 s += "<tr><th>問題</th>"; 75 for (n=0;n<qa.length;n++) { 76 s += "<th>" + (n+1) + "</th>"; 77 } 78 s += "</tr>"; 79 //2行目 80 s += "<tr><th>成績</th>"; 81 for (n=0;n<qa.length;n++) { 82 s += "<td>" + ansers[n] + "</td>"; 83 } 84 s += "</tr>"; 85 s += "</table>"; 86 document.getElementById("text_q").innerHTML = s; 87 //次の選択肢 88 s = "【<a href='javascript:history.back()'>前のページに戻る</a>】"; 89 s += "【<a href='javascript:setReady()'>同じ問題を最初から</a>】"; 90 s += "【<a href=''>次の問題に進む</a>】"; 91 document.getElementById("text_s").innerHTML = s; 92 } 93} 94</script> 95</body> 96</html>

試したこと

ダブルクオーテーションをクオーテーションにしたりした。

補足情報(FW/ツールのバージョンなど)

もっと前後のコードを書く必要がある場合言ってください。

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

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

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

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

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

kei344

2020/04/10 03:18

書かれている状況が再現するコード(HTML/CSS/JavaScriptなど)を質問文に追記されたほうが回答を得やすいと思います。
k130

2020/04/10 05:52 編集

質問本文に記載しました。
kei344

2020/04/10 05:07

この「質問への追記・修正の依頼」の部分はデフォルトで表示されませんので、質問本文に追記することをお勧めします。
guest

回答1

0

formを送信(submit)するかしないかで処理が異なります。
送信しない処理なら、answerの値自体をどこかに表示するなり、
評価して結果を表示するなりしてください

投稿2020/04/10 03:27

yambejp

総合スコア114839

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

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

k130

2020/04/10 04:45

ページを更新すると、他の値が初期化されてしまいそうで面倒なので、 ページを更新しないように、submitしないで?処理を行いたいのですが、 answerの値とはdocument.a1.answer.valueのことですよね? numという変数を用いて、 num=document.a1.answer.value; として入力を行ったのですが、うまくいきません。
yambejp

2020/04/10 05:05

変数num投入するのはできますが、そのnumを確認しなくてもいいのでしょうか?
k130

2020/04/11 03:51 編集

if (!empty(document.a1.answer.value)) { で処理したら早そうなんですがなぜかできませんでした。
k130

2020/04/11 03:49 編集

上に書いたように、 emptyが使えるともっとスマートになるんですが、なぜかできない。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問