• ベストアンサー

Nameは配列で、チェックされた箇所を特定したい。

こんにちは。 下記のように、nameを配列に設定してるCheckBoxについて、 func()内で、チェックされたCheckBoxを特定するには どうすればよいでしょうか? チェック済みのCheckBoxではなく、 func()を起動させた、チェック、チェック解除箇所です。 チェックする度、解除する度、変るはずです。 <input type="checkbox" name="arr[]" onClick="func()"> <input type="checkbox" name="arr[]" onClick="func()"> <input type="checkbox" name="arr[]" onClick="func()"> <input type="checkbox" name="arr[]" onClick="func()">

質問者が選んだベストアンサー

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.4

>arr[]の何番目かというのは判らないのでしょうか? <html> <head> <script language="JavaScript"><!-- function func(obj) { var a = document.getElementsByName("arr[]"); for(var i = 0; i < a.length; i++){ if(a[i] == obj){ alert(i); } } } // --></script> </head> <body> <form> <input type="checkbox" name="arr[]" onClick="func(this)"> <input type="checkbox" name="arr[]" onClick="func(this)"> <input type="checkbox" name="arr[]" onClick="func(this)"> <input type="checkbox" name="arr[]" onClick="func(this)"> </form> </body> </html> この方法が正しいのかちょっと自信はありませんが、Windowsの IE6 Opera9 FireFox2 で動作確認しました。

その他の回答 (4)

回答No.5

別解として(めんどくさい方法)idを指定してそこから取り出す。 (数字だけのIDは指定出来ません。アルファベットなどと組み合わせてください) <input type="checkbox" name="arr[]" id="arr1" value="check1" onlick="func(this);"> <input type="checkbox" name="arr[]" id="arr2" value="box1" onlick="func(this);"> func(element){ var num=element.id.substr(3,element.id.length); alert(num); } あらかじめJSONオブジェクトを作っておくと(valueから判断する場合) var chklist={'check1':1,'box1':2}; func(element){ var num=chklist[element.value]; alert(num); } 普通はANo.4のようにループさせて引数と同じオブジェクトかどうかを判断すると思います。 蛇足ながら<a>のname属性と混同される方も多いので、 <input>のname属性はHTML4.01、XHTML1.0、XHTML1.1ともsubmitとresetをのぞき必須(required)、submitとresetは任意 idに使用出来ない文字でもnameに使用出来る文字であれば、nameに指定することが出来ます > DTDより、INPUTに関する部分 > <!-- attribute name required for all but submit and reset --> 自分でも必須というのは今になって初めて知りました。。。

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.3

1.name属性は推奨されません。id属性を使います。  name属性はXHTML1.1で廃止されています。  HTML4.0なら問題ないですが、id属性も併用するほうがよろしいでしょう。 2.id(name)属性で使える文字は、[a-zA-Z]、[0-9]、ハイフン(-)、アンダーライン(_)、コロン(:)、ピリオド(.)  だけなので、"[]"を使ってはいけません。  IDは普通の名前にして、onClickでfunc(this)などとして、JavaScript上でチェック対象をチェック  すると思います。

  • venzou
  • ベストアンサー率71% (311/435)
回答No.2

関数を呼び出すときにthisを引数で渡します。 サンプル <html> <head> <script language="JavaScript"><!-- function func(obj) { alert(obj.checked); } // --></script> </head> <body> <form> <input type="checkbox" name="arr[]" onClick="func(this)"> <input type="checkbox" name="arr[]" onClick="func(this)"> <input type="checkbox" name="arr[]" onClick="func(this)"> <input type="checkbox" name="arr[]" onClick="func(this)"> </form> </body> </html>

noname#107872
質問者

お礼

回答ありがとうございます。 arr[]の何番目かというのは判らないのでしょうか?

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

<input type="checkbox" name="arr[]" onClick="func(this)"> とすればthisが自分自身(この場合はinputタグ)なので、特定できるでしょう。

noname#107872
質問者

お礼

回答ありがとうございます。 arr[]の何番目かというのは判らないのでしょうか?

関連するQ&A