我在IE 9中遇到了JavaScript作用域的真正问题。
这段代码位于我的文档主体内(是的,我知道脚本应该放在头部以便于正确的HTML,但我以前从未因此破坏过脚本)。脚本位于主体内部,因为我不想改动一个共享的页眉页面,而这个脚本只与该页面相关:
<script type="text/javascript">
function googleMapsQuery(accountNum) {
// function code is here (omitted for brevity)
}
</script>
这段代码位于一个 form
块内部的 table
块内部的 tbody
块内部的 tr
块内部的 td
块中,并在 body
块内:
<button id="google-422111" onclick="googleMapsQuery(422111)" type="button">Google This!</button>
我甚至将脚本块移动到表单之上,以防万一脚本函数声明的顺序很重要(但实际上并不重要)。
这个脚本在FireFox和Chrome中完美地工作,但是在IE 9中(无论兼容视图是否开启)我收到以下错误:
SCRIPT5007:属性'googleMapsQuery'的值为null或undefined,而不是函数对象
我研究了JavaScript的作用域,但无法弄清楚为什么IE认为'googleMapsQuery'是一个属性,而且它为什么是未定义的。它是一个函数,并且我已经定义了它!