- 締切済み
JavaScriptで選択問題作成(3)
お世話になります。 以前ここで質問をさせてもらった件で不具合が出来たのでまた質問をさせてもらいます。 以前のスレはこれです。 http://okwave.jp/qa/q9170301.html ここで教えてもらった通りに作成していたのですが、以下のような感じです。 <!DOCTYPE html> <meta charset="utf-8"> <style> fieldset.q ul { list-style: none; } </style> <body> <h1>問題</h1> <fieldset class="q"> <legend>Q1. 九州の県は次のうちどれですか?</legend> <ul> <li><label><input type="checkbox" name="q1" value="true">福岡</label> <li><label><input type="checkbox" name="q1" value="false">岡山</label> <li><label><input type="checkbox" name="q1" value="false">山形</label> <li><label><input type="checkbox" name="q1" value="true">長崎</label> <li><label><input type="checkbox" name="q1" value="true">熊本</label> <li><label><input type="checkbox" name="q1" value="false">新潟</label> <li><label><input type="checkbox" name="q1" value="false">山口</label> <li><label><input type="checkbox" name="q1" value="true">鹿児島</label> <li><label><input type="checkbox" name="q1" value="true">佐賀</label> <li><label><input type="checkbox" name="q1" value="false">青森</label> <li><label><input type="checkbox" name="q1" value="true">宮崎</label> <li><label><input type="checkbox" name="q1" value="false">千葉</label> </ul> <input type="button" value="解答"> <input type="hidden" name="q1" value=""> </fieldset> <p> <input type="button" value="リセット"> <input type="button" value="終了"> <script> function check (e) { var fieldset = e.parentNode; var seikai = fieldset.querySelectorAll ('input[type="checkbox"][value="true"]'); var kaitou = fieldset.querySelectorAll ('input[type="checkbox"]:checked'); var hidden = fieldset.querySelector ('input[type="hidden"]'); var kotae; if (seikai.length === kaitou.length) { hidden.value = 'true'; alert ('正解です。'); } else { hidden.value = ''; kotae = Array.prototype.map.call (seikai, function (e) { return e.parentNode.textContent; }).join (', '); alert ([ '不正解です。', '答えは、'+ kotae + 'です。' ].join ('\n')); } } function ending () { var es0 = document.querySelectorAll ('fieldset.q input[type="hidden"]'); var es1 = document.querySelectorAll ('fieldset.q input[type="hidden"][value=""]'); alert ([ '問題数は、'+ es0.length + 'です。', '間違いは、' + es1.length + '問あります。' ].join ('\n')); } function reset () { var es = document.querySelectorAll ('fieldset.q input[type="hidden"]'); Array.prototype.forEach.call (es, function (e) { e.value = ''; }); } function listener (event) { var e = event.target; if ('button' === e.type) switch (e.value) { case '解答' : check (e); break; case 'リセット' : reset (); break; case '終了' : ending (); break; } } reset (); document.addEventListener ('click', listener, false); </script> ここでなぜか 福岡 長崎 熊本 鹿児島 佐賀 宮崎にチェックを入れて解答したら もちろん正解になります。 その後に長崎のチェックを外してかわりに山形にチェックを入れて解答したらなぜか正解になります。もちろん山形はfalseにしています。 しかし福岡 山形 長崎 熊本 鹿児島 佐賀 宮崎にチェックを入れた状態で 解答をすると不正解になります。 何故でしょうか? 教えてください
- みんなの回答 (8)
- 専門家の回答
みんなの回答
- amanojaku1
- ベストアンサー率54% (265/488)
- amanojaku1
- ベストアンサー率54% (265/488)
- amanojaku1
- ベストアンサー率54% (265/488)
- babu_baboo
- ベストアンサー率51% (268/525)
- muuming2001
- ベストアンサー率23% (202/847)
- babu_baboo
- ベストアンサー率51% (268/525)
- muuming2001
- ベストアンサー率23% (202/847)
- muuming2001
- ベストアンサー率23% (202/847)
お礼
ありがとうございました。 助かりました。