テキスト入力フィールドでのユーザーの「キーアップ」イベントに基づいて、オンザフライで計算を行う Web ページがあります。動的に構築されるかなり大きなページなので、ページ内の他の場所から参照できる値のハッシュ/配列を保持する必要があります。
だから、ページの上部で私はこれをやっています -
var itemBalanceHash = new Array();
var itemID_2_POIDHash = new Array();
var currentPODocumentID;
var warningArray = new Array();
次に、先ほど定義したこれらの変数を使用する関数をいくつか定義します。しかし、これらの関数を定義し終えてから、これらの変数が使用され始めます (つまり、何かでいっぱいになります)。
<script type="text/javascript">
itemBalanceHash["${topitem.itemIdentifier}"]="${topitem.itemOutstandingEncumberedAmount}";
itemID_2_POIDHash["${topitem.itemIdentifier}"] = currentPODocumentID;
</script>
このスクリプト ブロックは、作成中のページの途中に表示されます。実際、入力する必要がある行数 (データベースからのクエリの結果セット) に応じて、複数回呼び出されます。
とにかく - これは Firefox でうまく機能します。ただし、IE8、Chrome、Safari では動作しません。古いバージョンの IE ではこれをテストしていません。しかし、そこでも機能しないと思います。
Internet Explorer Debugger が表示するエラー メッセージは次のとおりです。
「itemBalanceHash が定義されていません」
それで、私の質問: これはスコーピングの問題ですか?
Firefox は私のエラーをどこかで修正したようですが、どこでしょうか?
必要に応じて、さらにコードを提供できます。ご協力いただきありがとうございます!
最高です!