###前提・実現したいこと
javascriptにてクイズを作成しています。
ラジオボタンの選択している方を検出して、処理をしたいと思いますがなかなかうまくいきません。
ご教授宜しくお願います。
今問題の場所を上下にランダムで配置するようにし、正解側が選択され、回答ボタンが押されたら、answer
に正解・不正解を表示したく作成しています。
DOMの取得等について、いろいろ見ていますがいまいちピンときません。ネットで参考になりそうな
コードを調べてみても、ラジオボタンにformタグがついている前提で説明されています。
私のコードもwebアプリケーションにするわけでないのでラジオボタンにformタグはつけていませんが、
どの説明を見ても、formからの取得になっていて理解できません。(私の理解不足が原因ですが・・・)
同時にDOMを理解できるサイトとかあれば、教えて頂けないかと合わせてお願いします。
(今回のソフト作成時に教えて頂いた、document.getElementById('choice1').nextSibling.nodeValue
id=choice1と定義されている次の子ノードのテキストノードのvalueを書き換えているのは理解できました。
id=choice1のラジオボタンが選択させた時に取得したいのはどれなのかは、よくわかっていません。
分かるようになりたいです)
もう一つ疑問点がありますが、これが理解出来たらお聞きします。
###発生している問題・エラーメッセージ
特にエラーはなし、ラジオボタンの選択している部分をいろいろ試してみましたが理解できずにいます。
###該当のソースコード
HTML
1 <h1>問題集1</h1> 2 <p id="que">ここに問題が表示されます</p> 3 <div> 4 <input id="choice1" type="radio" name="choice" >○○○<br> 5 <input id="choice2" type="radio" name="choice" >×××<br> 6 <input type="button" value="回答する" onclick="button_click();"> 7 </div> 8 <p id="answer"></p> 9 <p id="last"></p> 10 <footer><a href="index.html">最初へ</a></footer>
javascript
1var i = 0; 2var judge ,rand; 3window.addEventListener("load", function() { 4 show_question(0); 5}, false); 6 7function end_study(i) { 8 document.getElementById('que').innerHTML = "問題はすべて終了しました!!"; 9 document.getElementById('choice1').nextSibling.nodeValue = "全問終了"; 10 document.getElementById('choice2').nextSibling.nodeValue = "全問終了"; 11 document.getElementById('answer').innerHTML = ""; 12 document.getElementById('last').innerHTML = "疲れるので休憩を取りましょう!!"; 13 i = 0; 14} 15 16function show_question(i) { 17 keyword_replace(i); 18 document.getElementById('que').innerHTML = q[i]; //test_1.jsの配列をそのまま取り込む 19 //問題の配置をランダムにする。 20 rand = Math.floor(Math.random() * 9); 21 judge = rand % 2; 22 if (judge == 0) { 23 document.getElementById('choice1').nextSibling.nodeValue = exac_a[i]; //同上 24 document.getElementById('choice2').nextSibling.nodeValue = miss_a[i]; //同上 25 } else if (judge == 1) { 26 document.getElementById('choice1').nextSibling.nodeValue = miss_a[i]; //同上 27 document.getElementById('choice2').nextSibling.nodeValue = exac_a[i]; //同上 28 //document.querySelector('label[for="choice1"]').innerHTML="選択肢B"; 29 } 30 if (i == 4) { 31 end_study(i); 32 } 33} 34 35function button_click() { 36 document.getElementById('answer').innerHTML = ""; 37 var radio1 = document.getElementById('choice1').value; 38 var radio2 = document.getElementById('choice2').value; 39 //console.log("judge:"+judge); 40 console.log("mark1:"+radio1); 41 console.log("mark2:"+radio2); 42 if ((judge == 0) && ( radio1.value == 1)) { 43 document.getElementById('answer').innerHTML = "全問の答え:正解でした"; 44 } else if ((judge == 0) && ( radio1.value == 0)) { 45 document.getElementById('answer').innerHTML = "全問の答え:間違いでした"; 46 } else if ((judge == 1) && (radio2.value == 1) ) { 47 document.getElementById('answer').innerHTML = "全問の答え:間違いでした"; 48 } else if((judge == 1) && (radio2.value ==0)){ 49 document.getElementById('answer').innerHTML = "全問の答え:正解でした"; 50 } 51 i++; 52 show_question(i); 53} 54---------------------------------------文字変換用.js-------------------------------------------- 55/* 56 *文字の置換 57 */ 58 var str_q = new String(); 59 var str_exca_a = new String(); 60 var str_miss_a = new String(); 61 var i = 0; 62 var keystart = null; 63 var keyend = null; 64 key1start ="<span id=\"keyword1\">"; 65 key2start ="<span id=\"keyword2\">"; 66 keyend ="</span>"; 67 68var keyword = { 69 徐行:key1start + "徐行(すぐに停止できる速度:何kmとかはない)" +keyend, 70 車両横断禁止:"車両横断禁止(しゃりょうおうだんきんし)", 71 緊急自動車:"緊急自動車(きんきゅうじどうしゃ:パトカー、救急車、消防車)" 72}; 73 74function keyword_replace(i) { 75 var str_q = q[i]; 76 77 str_q = str_q.replace("徐行",keyword.徐行); 78 str_q = str_q.replace("車両横断禁止",keyword.車両横断禁止); 79 str_q = str_q.replace("緊急自動車",keyword.緊急自動車); 80 q[i] = str_q; 81 82 var str_exac_a = exac_a[i]; 83 str_exac_a = str_exac_a.replace("徐行",keyword.徐行); 84 str_exac_a = str_exac_a.replace("車両横断禁止",keyword.車両横断禁止); 85 str_exac_a = str_exac_a.replace("緊急自動車",keyword.緊急自動車); 86 exac_a[i] =str_exac_a ; 87 88 var str_miss_a = miss_a[i]; 89 str_miss_a = str_miss_a.replace("徐行",keyword.徐行); 90 str_miss_a = str_miss_a.replace("車両横断禁止",keyword.車両横断禁止); 91 str_miss_a = str_miss_a.replace("緊急自動車",keyword.緊急自動車); 92 miss_a[i] = str_miss_a; 93} 94
###試したこと
value,cheakedなど色々試しましたが、自分の思う動きになりません。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/28 13:18