Javascript 怪异';未定义的'的子节点;IE8中带有AngularJS应用程序的错误

Javascript 怪异';未定义的'的子节点;IE8中带有AngularJS应用程序的错误,javascript,internet-explorer,angularjs,internet-explorer-8,Javascript,Internet Explorer,Angularjs,Internet Explorer 8,TypeError:无法获取属性“childNodes”的值:对象为null或未定义 在对我的应用程序进行了一长串修改以支持IE8之后,包括: 通过W3C validator以编译的形式运行所有视图,设置以支持CORSAPI调用,进行一些常规的重构,等等。 我很失望地发现IE8仍然向我抛出这个奇怪的错误,而IE9工作得非常好 防止它在客户端为IE浏览器时运行 有什么想法吗?没有正在运行的代码,这有点困难。但是,有一个用于调试的命令。首先,您需要确定哪些变量可能不包含对象[即。 “对象为空或未定义

TypeError:无法获取属性“childNodes”的值:对象为null或未定义

在对我的应用程序进行了一长串修改以支持IE8之后,包括: 通过W3C validator以编译的形式运行所有视图,设置以支持CORSAPI调用,进行一些常规的重构,等等。 我很失望地发现IE8仍然向我抛出这个奇怪的错误,而IE9工作得非常好

防止它在客户端为IE浏览器时运行


有什么想法吗?

没有正在运行的代码,这有点困难。但是,有一个用于调试的命令。首先,您需要确定哪些变量可能不包含对象[即。 “对象为空或未定义”]。 例如,parent,则可以使用

//next look to see if parent is something
if('undefined'==(typeof parent)) alert("variable empty:parent");
一旦你找到了你期望成为一个对象的空的东西,你就可以从那里追溯。还可以使用浏览器调试工具来识别错误的行号

通常情况下,如果使用子节点,您可能没有正确的级别,或者需要作为数组进行访问,例如,您需要以下内容

parent.childNodes[0].childNodes[0].value
在IE中,您还需要处理不受支持的函数。因此getElementById可以工作,但其他一些类似的则不行。同样,typeof也很有用

//next ensure function supported
if( 'undefined'==(typeof document.getElementsByClassName) ){
    alert("Not Supported");                  // notice ^ no () required here
    //...add code to handle differently when not supported
}

这可能会揭示,如果您可以在不使用正在运行的代码的情况下使用函数,那么这有点困难。但是,有一个用于调试的命令。首先,您需要确定哪些变量可能不包含对象[即。 “对象为空或未定义”]。 例如,parent,则可以使用

//next look to see if parent is something
if('undefined'==(typeof parent)) alert("variable empty:parent");
一旦你找到了你期望成为一个对象的空的东西,你就可以从那里追溯。还可以使用浏览器调试工具来识别错误的行号

通常情况下,如果使用子节点,您可能没有正确的级别,或者需要作为数组进行访问,例如,您需要以下内容

parent.childNodes[0].childNodes[0].value
在IE中,您还需要处理不受支持的函数。因此getElementById可以工作,但其他一些类似的则不行。同样,typeof也很有用

//next ensure function supported
if( 'undefined'==(typeof document.getElementsByClassName) ){
    alert("Not Supported");                  // notice ^ no () required here
    //...add code to handle differently when not supported
}

这可能会显示您是否可以使用功能

确保所有标签都已正确关闭。我花了几个小时试图找出问题所在,直到我在代码中注意到:

一些文本


我终于意识到我没有正确地关闭
标签。之后一切正常。

确保所有标签都已正确关闭。我花了几个小时试图找出问题所在,直到我在代码中注意到:

一些文本


我终于意识到我没有正确地关闭
标签。在那之后,一切都正常了。

IE8太旧了,不符合标准,它不支持childNodes[]

IE8太旧,不符合标准,不支持childNodes[]

您建议在IE中使用什么调试器来获取错误行?在IE中,我使用内置的>工具>开发人员工具或F12。我还要注意左下角的警告!,双击该选项,将打开一个弹出窗口,其中包含详细信息和行号。您建议在IE中使用什么调试器来获取错误行?在IE中,我使用内置的>工具>开发人员工具或F12。我还要注意左下角的警告!,双击它,它会打开一个带有详细信息和行号的弹出窗口。