NETCREATESBLOGネットクリエイツの公式ブログ

netcreates. blogでタグ「prototype」が付けられているもの

Firefox3 で *.each is not a function(Prototype.js)

イトウです。

ウェブアプリケーションの開発の際は、ユーザビリティの向上のため、 JavaScript(PrototypeやjQuery) を使っています。依存するような操作は好ましくないと思うのですが、これらをうまく活用することで、少しでもユーザの負担が減れば、と思っています。

ところで、Firefox 3 にしてからしばらくしたのですが、Array.each を使おうとすると、「*.each is not a function」と出るようになりました。どうやら、Firefox3 になってから getElementsByClassName() がネイティブに実装され、その結果、返す型が変更になったのが原因のようです。

var elems = $A(elements.getElementsByClassName("hoge"));

といった具合に、変換してやればいいと思います。せっかく実装されたネイティブな関数なので、オーバーヘッドのことなんかも考えたら、getElementsByClassName() を使ったほうが良いと思います。