【发布时间】:2012-07-31 21:18:25
【问题描述】:
我有一个网页,它根据文本输入字段中的用户“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 似乎在某处纠正了我的错误,但在哪里?
如有必要,我可以提供更多代码。感谢您的帮助!
非常感谢!
【问题讨论】:
-
上面的脚本只有那四行吗?它是如何包含的?
-
您可以使用
{}(shorthand fornew Object()) 而不是new Array()(has a shorthand[]),因为您实际上并不需要数组。 -
你真的应该使用对象 (
{}) 作为哈希值,javascript 数组仅用于数字索引数组。 -
是的 - 我将其更改为速记版本。它什么也没做。谢谢你的提示。
-
Esailija - 我只是将它直接包含在同一个 JSP 页面中(而不是作为链接)。
标签: javascript arrays internet-explorer scope