IE抛出JavaScript错误:属性'googleMapsQuery'的值为null或未定义,而不是Function对象(适用于其他浏览器)

chr*_*riv 12 javascript runtime-error function undefined internet-explorer-9

我在IE 9中遇到了JavaScript范围的真正问题.

这是在我的文档正文中(是的,我知道脚本应该在正确的HTML中,但我从来没有打破过脚本).该脚本在正文中,因为我不想弄乱只与此页面相关的脚本的共享页眉:

<script type="text/javascript">
function googleMapsQuery(accountNum) {
    // function code is here (omitted for brevity)
}
</script>
Run Code Online (Sandbox Code Playgroud)

这是在td块内部tr块内的tbody块内部table块内部form块内部body:

<button id="google-422111" onclick="googleMapsQuery(422111)" type="button">Google This!</button>
Run Code Online (Sandbox Code Playgroud)

我甚至将脚本块移到了表单上方,以防脚本函数声明的顺序相关(事实并非如此).

该脚本在FireFox和Chrome中运行完美,但在IE 9中(有或没有兼容性视图),我收到此错误:

SCRIPT5007:属性"googleMapsQuery"的值为null或未定义,而不是Function对象

我研究了JavaScript范围,我无法弄清楚为什么IE认为'googleMapsQuery'是一个属性,以及为什么它未定义.这是一个功能,我定义了它!

Chr*_*ris 21

我遇到类似的问题,属性为null或未定义.

这最终导致IE的文档模式被默认为IE7标准.这是由于兼容模式被自动设置为用于所有Intranet站点(工具 > 兼容性视图设置 > 在兼容性视图中显示Intranet站点).

  • 这对我有很大帮助 - 这个页面是谷歌搜索"属性的值为null或未定义,而不是Function对象"的第一个热门,这就是我需要的解决方案.那谢谢啦! (3认同)

chr*_*riv 11

我找到了答案,尽管我报告的内容,但它并非特定于浏览器.错误在我的功能代码中,并且会在任何浏览器中发生.归结为此.我的代码中有两行是FireFox/FireBug特有的.他们使用了console.log.在IE中,他们抛出了一个错误,因此我将它们评论出来(或者我认为).我做了一个糟糕的工作评论他们,并打破了我的功能包围.

原始代码(包含console.log):

if (sxti.length <= 50) console.log('sxti=' + sxti);
if (sxph.length <= 50) console.log('sxph=' + sxph);
Run Code Online (Sandbox Code Playgroud)

破碎的代码(注释中的错误括号):

if (sxti.length <= 50) { //console.log('sxti=' + sxti); }
if (sxph.length <= 50) { //console.log('sxph=' + sxph); }
Run Code Online (Sandbox Code Playgroud)

固定代码(注释外的固定括号):

if (sxti.length <= 50) { }//console.log('sxti=' + sxti);
if (sxph.length <= 50) { }//console.log('sxph=' + sxph);
Run Code Online (Sandbox Code Playgroud)

所以,这是我自己的草率编码.该函数确实未定义,因为语法错误使其无法关闭.

哦,生活和学习.;)