きよくらの備忘録

「三日坊主と呼ばせない!日記」改め。主にソフトウェア開発関連の話題。

DataGridとかの中のinput要素に対してJavascriptで何かしたいとき

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:副作用あるかどうかは検証してませんので何とも言えません。知ってる方がおられたら教えてください