いやぁ、はまりました(x_x;)
JavaScriptを使う場合、スクリプトのルート(どこの関数にも属さない部分 仮にmainと呼ぶことにします)に書いたのと、bodyタグのonLoadで関数を呼び出すのとでは、document.getElementsByTagNameなどの返す値が違います。
考えてみればその通りなんですが、mainに書くと、documentは当然ながらscriptタグの部分までしか作成されておらず、中のimgタグをリストアップしようと思っても出来ません。対してonLoadならば、ちゃんと全文が作成されており、body内の操作ができます。
FirefoxのJavaScriptコンソールで正常に動作するのに、document.getElementsByTagName(*)がscriptタグのあたりで止まるので、何でかなぁと思ったら…。
んー、たぶんJavaScriptを使う人にとっては常識なんでしょうが、なかなか気づきにくいです。あとでどこかに書いた方がいいだろうな。