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>

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

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

このQ&Aと関連する良く見られている質問

Qvar $i = hoge; $の意味について

初心者の質問ですみませんが教えて下さい。
jqueryのソースで以下のソースがあったのですが、
var i = ではなくvar $i にしないといけない理由ってありますか?

var $i = $( '#img' ); // 対象の img タグを選択
var img = new Image();
img.src = $i.attr('src');

Aベストアンサー

こんにちは。

$iにしなくてはいけない理由はないと思います。

多分$('#img')でjQueryのオブジェクトを取得してるので$をつけているんだと思います。
(私もjQueryで取得した要素については$を付けるようにしています)
ようするにわかりやすいようにです。

Qで、Q1に後で値を設定して表示するには

お世話になります。
<input type="text" name="Q1">で、Q1に後で値を設定して表示するにはどうしたら良いものでしょうか。
name="Q1"
と、しているので、
onMousedown="function()"
で、nameでしてしたエリアに値を書き込めば、できると思うのですが、
このfunction()をどのように書いたらよいものか、いろいろ調べてもわかりません。
何とかご教示願えないでしょうか。
よろしくお願いします。

Aベストアンサー

javascriptを利用することで出来ます。
こんな感じで動くでしょう。
ちなみにテキストボックスなどをjavascriptで操作する場合は
idをつけておくと便利です。

これ以上をやりたいというのであれば
参考URLなど見て勉強してみてください
<html>
<head>

</head>
<body>

<input type="text" id="Q1" name="Q1" onmousedown="hoge()">
</body>
<script type='text/javascript'>
function hoge()
{
Q1.value = ""; //""のなかに設定する値
}
</script>

参考URL:http://www.parkcity.ne.jp/~chaichan/src/javasc21.htm

Q&= ~0x0c; &= ~0x03; |=1;

JavaScriptで分からないコードがあるので教えてください。


■変数設定
var hoge = 0;


■変数格納
・キーを押した時の条件分岐
  ~なら hoge |= 1;
  または hoge |= 2;
  または hoge |= 3;
  または hoge |= 8;

・キーを離した時の条件分岐
  ~なら hoge &= ~0x0c;
  または hoge &= ~0x03;


■変数使用
・swithch文の条件分岐に利用
  (hoge&0x03)
  (hoge&0x0c)


■質問
・どういう意味でしょうか?
・文字コード?
・ビット演算?

Aベストアンサー

ビット演算してるわね

x = x + a

x += a
って書くことができるの

つまり
hoge |= 1

hoge = hoge | 1
のことね

~はNOTのこと

0x
はアスキーコードの16進数表記ねきっと

0x0c は改ページを意味していて
0x03 は文章の最後を意味している
と思われるわ
全文がないので推測だけど

Qinput type="file"のvalue監視

input="file"のvalue値が変更されたら別のテキストフィールドに表示するというScriptを書いたのですが動作してくれません。
input="file"ではなく普通のテキストフィールドならば動作します。
fileフィールドでは動作しないのでしょうか。それとも書き方がまずいのでしょうか。

以下、ソースです。

<html>
<head>
<title>test</title>
<script type="text/javascript" src="/javascript/prototype.js"></script>
</head>
<body>
<form action="" enctype="multipart/form-data" method="post">
<input id="file_test" name="file_test" type="file">
<br>
<div id="result">表示</div>
<script type="text/javascript"><!--
window.onload = function() {
new Form.Element.Observer('file_test', 1, function(element, value) {
document.getElementById('result').innerHTML = value;
});
}
//--></script>
</form>
</body>
</html>


よろしくお願いします。

input="file"のvalue値が変更されたら別のテキストフィールドに表示するというScriptを書いたのですが動作してくれません。
input="file"ではなく普通のテキストフィールドならば動作します。
fileフィールドでは動作しないのでしょうか。それとも書き方がまずいのでしょうか。

以下、ソースです。

<html>
<head>
<title>test</title>
<script type="text/javascript" src="/javascript/prototype.js"></script>
</head>
<body>
<form action="" enctype="multipart/form-data" method="post">
...続きを読む

Aベストアンサー

type="file"は、ブラウザごとに特にセキュリティが厳しいので
基本的にはなにもできないと認識しておいた方がよいでしょう。

Qdocument.writeをinput type="text"の value値に

超初心者です。
下記の式にてPHPよりjavascriptにてHTMLに書き出しできましたが
<script type="text/javascript" src="./jsphptest.php?long=3" ></script>この値をHTMLのinput type="text"の value値にデフォルトとして入れたいと思っていますが、どうすればできるのか分かりません。できればボタン等を介さずページをロードすればこPHPからjavascriptのdocument.write値がvalue値に入って欲しいと思っています。簡単なようで難しいことなのでしょうか?どうかご教授よろしくお願いいたします。

Aベストアンサー

それからどうでもいいけど
htmlのタグの順番が適当ですね。


人気Q&Aランキング

おすすめ情報