下記の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>
たぶん、ですが、以下を見直してみたらどうでしょうか?
まず↓の行の最後に ; を付ける。
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 <- ダミーです。
ありがとうございます。
書き換えられたページに対してスクリプトが実行されていたことに気づきませんでした。