我有一个网页,可以根据文本输入字段中的用户'keyup'事件动态进行一些计算。这是一个动态构建的相当大的页面,因此我必须保留一个Hash / Array值,我可以从页面中的其他位置引用这些值。
所以在页面顶部我这样做 -
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似乎在某处纠正了我的错误,但在哪里?
如有必要,我可以提供更多代码。谢谢你的帮助!
非常感谢!
答案 0 :(得分:0)
问题出在iframe上! Firefox为我执行JSP页面中的所有JS代码。 IE,Chrome和Safari需要将事件监听器附加到页面上,该事件监听器将触发加载事件,然后执行我的JS代码(此对象的实例化应该发生)。
非常有趣。我期待微软这样的事情,但我很惊讶Google和Safari的表现方式类似。 FF是我的默认浏览器的另一个原因。
感谢大家的帮助/回复。
干杯!