Posts Tagged ‘prototype.js’

prototype.js:firefox3で”each is not a function”

こんなバッドノウハウを使うことは2度と無いだろうと思ってメモらなかったら、今日思い出せなくて苦しんだので、今度こそメモる。 firefox3で”each is not a function”のエラーが出るときは.getElementsByClassName()を調べること。 firefox3ではgetElementsByClassName()はネイティブ実装されている。そしてこの関数が返す型はfirefox2と3で異なる。 firefox2…HTMLElementのサブインターフェース firefox3…HTMLCollection なのでfirefox3ではelements.each(function(element))~みたいな命令がエラーになる。 対処方法は↓このへんがお手軽。 ・elements.getElementsByClassName(“hoge”) を$A(“hoge”)に置き換える。 ・elements.getElementsByClassName(“hoge”) をelements.select(“.hoge”)に置き換える。 ・.eachを使わず、forやwhileで処理する せっかく処理速度が速くなっているのでなるべくネイティブ実装のgetElementsByClassName()を使ったほうがいいはず。なのでエラーになるところだけ、上記のように書き換える。