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 16:07:37
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:tap_t No.1

回答回数45ベストアンサー獲得回数6

ポイント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

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

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

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

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

回答リクエストを送信したユーザーはいません