DataGridとかGridViewとかで行の中に配置され繰り返しになっているTextBox等のコントロール等、id属性やname属性で特定するのが困難な要素をjavascriptで触りたい時は、class属性の値をうまく使うとシンプルにできる場合がある、という気がしたのでメモ。
要はPrototype.jsのgetElementsByClassNameみたいなので該当のclass属性を持つや要素の配列を取得、それに対してループするなり何なりお好きにどうぞ、と。
ただし、Prototype.jsのgetElementsByClassNameはけっこう重いしそもそもASP.NET AJAXを見据えるとASP.NETにそんなもの組み込んで副作用はないんかいな、とも思ったので、とりあえずパス*1。というか、そのためだけにPrototype.jsを使うのは違う気がするし。
(そういえばGekkoにはgetElementsByClassNameが実装されるとかされたとか言っていた気がしますが、今僕の主戦場はIEなので……)
そういうのを自作するなら……とりあえず全要素に対してclass属性のチェックを行うと無駄過ぎる気がする……のでまずはgetElementsByTagNameで要素を絞ってからclass属性をチェックするのが定石……でしょうか。
で、いざコーディング……と思ったのだけれど、「…いやいや、ちょっと待て、多分こんな事は僕が思いつくこの瞬間までにきっと100万人じゃ効かない単位の人が思いついてるに違いないし、中にはきっとコードを公開している人も大勢いるはずだろう、常考」と言うことでGoogleさんに聞くと、やっぱりいっぱいおられました。
とりあえず今日の結論は、getElementsByClassNameをIEでも実装して欲しいなぁ、と。<違
*1:副作用あるかどうかは検証してませんので何とも言えません。知ってる方がおられたら教えてください