0

我有一个网页,可以根据文本输入字段中的用户“keyup”事件即时进行一些计算。这是一个动态构建的相当大的页面,所以我必须保留一个值的哈希/数组,我可以从页面内的其他位置引用这些值。

所以在页面顶部我正在这样做 -

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 调试器给我的错误消息是这样的

“itemBalanceHash 未定义”

所以,我的问题是:这是一个范围界定问题吗?
Firefox 似乎在某处纠正了我的错误,但在哪里?

如有必要,我可以提供更多代码。谢谢你的帮助!
非常感谢!

4

1 回答 1

0

所以问题出在 iframe 上!Firefox 为我执行我的 JSP 页面中的所有 JS 代码。IE、Chrome 和 Safari 需要将事件监听器附加到页面上,以触发加载事件,然后执行我的 JS 代码(该对象的实例化应该发生的地方)。

很有意思。我期待微软会做出这样的事情,但我很惊讶谷歌和 Safari 的行为方式相似。FF 是我的默认浏览器的另一个原因。

感谢大家的帮助/回复。

干杯!

于 2012-08-01T16:53:00.023 回答