ユーザーが HTML テーブルのセルをクリックしたときに匿名関数を登録しようとしています。生の、純粋なコードの一部を次に示します。
document.getElementById(
"course"+displayed_year_index+occurrences_indices[displayed_year_index]).onclick =
eval("function() {PrintReceipt("+result.years[result_year_index].rul_code+");};");
eval
これはループ内にあり、無名関数は毎回異なるため、 の使用に注意してください。
これは、Firefox 2 ではまったく問題なく動作します。しかし、Firefox 3 では、「関数」という単語の後の括弧内を指す「構文エラー」がスローされます。
これを修正する方法について、誰かが賢いアイデアを持っていますか?
私がやろうとしていることを明確にするために、非常に単純化された例を次に示します。
for (index=0; index<4; index++) {
document.getElementById("div"+index).onclick =
eval("function () {Foo(index);};");
}
つまり、同じ関数を、それぞれに異なるパラメーター値でトリガーしたいと考えていますdiv
。