最新閲覧日:

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>

A 回答 (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);
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ