• 締切済み

alert表示で計算結果がうまく表示しません

alert表示で計算結果がうまく作動しません。 全問正解しても『0』と表示されてしまいます。 for文がうまくいっていないのだと思いますが どう解決していいのか、まったく解りません。 おわかりになる方がいらっしゃいましたら教えて下さい。 <script language="JavaScript"> <!-- function func() { $A = new Array(6); $A[1] = "n"; $A[2] = "n"; $A[3] = "n"; $A[4] = "n"; $A[5] = "n"; var $q_no; var $i_end; var $i = parseFloat($i); var $ans= parseFloat("0"); $i_end = parseFloat($q_no); $i_end = $i_end + 1; for($i; $i < $i_end; $i++){ if ($A[$i] == document.Frm_Q.Q[$i].value){ $ans= $ans + 10; } } alert($ans); } // --> </script> <form name="Frm_Q"> <input type="radio" name="Q[1]" value="Y">はい<input type="radio" name="Q[1]" value="n">いいえ<br>###Q5まで続く### <input type="button" value=" 採 点 " onClick="func()"> <input type="reset" value="リセット"> </form>

みんなの回答

  • AKIIRA
  • ベストアンサー率38% (15/39)
回答No.1

こんばんは。 for文がうまくいってないとのことですが、問題は初期化されていない変数にあります。 この例だと   $q_no   $i_end   $i が初期化されていないので、NaNというでたらめな値が入っています。 これは、適当なところでalert($q_no)などとしてみればわかります。 NaNに1を足してもNaNなので、for文の条件はNaNとNaNの比較になり 結果としてfor文の中へは入りません。 また、for文の中に入っても、Qという配列は定義されていないため、 ここでも望む結果が得られません。 以上のことをふまえて、関数部分だけ書き換えてみました。 ($は不要なので書いてません) 不明な点はがんばって調べてください。 また、alert関数を使えば変数の値が見られるので、最初のうちは各行ごとに 変数の値をチェックしてもいいかもしれませんね。 function func() { $A = new Array(6); $A[1] = "n"; $A[2] = "n"; $A[3] = "n"; $A[4] = "n"; $A[5] = "n"; var q_no = 5; var i_end; var i = 1; var ans = 0; i_end = q_no; i_end = i_end + 1; var btn_name = ""; var reply = ""; for(i=1; i < i_end; i++) { btn_name = "Q["+i+"]"; if(document.Frm_Q[btn_name][0].checked) reply = "Y"; else reply = "n"; if ($A[i] == reply) { ans= ans + 10; } } alert(ans); }

関連するQ&A