Javascriptについて質問です。

下記のscriptとHTMLを用意し、「func」ボタンを押すと、「123」と出力されずに「100」となってしまうのはなぜでしょうか。「123」となるようにするには何が不足しているのか教えてください。

script
<script language="javascript" type="text/javascript">
function func(){
var k_list,k_count,knum,k;
for (k = 0 ; k < 3 ; k++){
knum = "radio"+(k+1)
k_list = document.getElementsByName(knum);
k_count = k_list.length;
document.write(k_count);
}
}
</script>

HTML
<body><form>
<input type="button" value="func" onclick="func()">

<p>
<input type="radio" name="radio1" >1
</p>
<p>
<input type="radio" name="radio2" >1
<input type="radio" name="radio2" >2
</p>
<p>
<input type="radio" name="radio3" >1
<input type="radio" name="radio3" >2
<input type="radio" name="radio3" >3
</p>
</form></body>

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/03/05 15:11:56
  • 終了:2009/03/05 16:07:37

ベストアンサー

id:tap_t No.1

たっぷ回答回数45ベストアンサー獲得回数62009/03/05 15:59:33

ポイント60pt

たぶん、ですが、以下を見直してみたらどうでしょうか?

まず↓の行の最後に ; を付ける。

knum = "radio"+(k+1)

次に、ループの中で write しているので、ラジオボタンが無くなったページになってしまっている。

と、思われるので、ループの外で write する。

ループの中で、write する内容を結合するが、単純に + すると数字として加算されるので、

k_count=""; の様に初期化する。


で、↓の様に変更すると、123 の様に表示されます。func() のみ書きます。

function func(){

var k_list,k_count,knum,k;

k_count="";

for (k = 0 ; k < 3 ; k++){

knum = "radio" + (k+1);

k_list = document.getElementsByName(knum);

k_count = k_count + k_list.length;

}

document.write(k_count);

}

こんな感じでどうでしょうか。

http://q.hatena.ne.jp <- ダミーです。

id:shujisi

ありがとうございます。

書き換えられたページに対してスクリプトが実行されていたことに気づきませんでした。

2009/03/05 16:06:55

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません