人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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>

●質問者: shujisi
●カテゴリ:ウェブ制作
✍キーワード:HTML JavaScript SCRIPT Write ボタン
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● たっぷ
●60ポイント ベストアンサー

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

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

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 <- ダミーです。

◎質問者からの返答

ありがとうございます。

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ