新規事業推進室の石田です。HTMLで、特定のクラス名を持つDOMエレメントを列挙してなにか操作をしたいときに、prototype.jsにあるgetElementsByClassName()を使うと探すエレメントを探す手間を省いてくれます。このprototype.jsのgetElementsByClassName()は、エレメントを列挙してクラス名をチェックするという実装になっているので、当然遅いです。そこで、Firefox3やChrome、Safariは、このgetElementsByClassName()がネイティブ実装されるようになりました。prototype.jsでもネイティブ実装があればそちらを優先するという風になってます。ところが、このネイティブ実装版のgetElementsByClassName()は結果として返す配列のエレメントのクラス名を変更すると配列自体が変更されてしまうという挙動を示します。わかりにくいと思うので、サンプルのHTMLを用意しました。以下のHTMLですが、testというクラス名を持つdivが3つあって、ボタンを押すとそのdivのクラス名をtestからchangeに変更し、文字の色を赤くするという動作を期待して作りました。つかうことになるので期待したとおりに、壱弐参の文字が赤くなります。表示した場合は、ボタンのクリックで弐だけが赤くなり、JavaScriptのエラーが報告されます。配列の中からこのエレメントがなくなってしまうようです。えー、ありえないでしょう。文字の色を変更する}}と、一旦配列をコピーしてからクラス名の変更を行う必要があります。これ、知らなかったのは私だけでしょうか・・・ひょっとして常識?では。Corporation.。