gpt4 book ai didi

javascript - 未捕获的类型错误 : Cannot call method 'hasChildNodes' of undefined

转载 作者:行者123 更新时间:2023-11-30 18:10:32 25 4
gpt4 key购买 nike

我正在尝试在 jquery 中使用 ajax 请求读取 XML。下面是代码,它在 IE 中运行良好,但是当我在 Chrome 上运行它时,我遇到了这个错误

Uncaught TypeError: Cannot call method 'hasChildNodes' of undefined

$.ajax({

type: "GET",
url: "tree1.xml",
dataType:"xml",
success: function(xml){
root=xml.documentElement;
childs=root.childNodes;
for(var i=0;i<childs.length;i++){
z=childs[i].childNodes;
adChilds(z,childs,oNode);


function adChilds(a,b,c){
if(a[i].hasChildNodes()){
adNode(b[i].nodeName,c);
var oNode_ch=oNode1;
for(var j=0;j<a.length;j++){
child1=a[j].childNodes;
adNode(child1[0].nodeValue,oNode_ch);
}
}
else{adNode(a[0].nodeValue,oNode);}
}
}

错误指向这一行。

if(a[i].hasChildNodes()){

任何人都可以告诉我哪里出错了。

提前致谢!

最佳答案

你这样做:

z=childs[i].childNodes;

然后,在 adChilds(z,childs,oNode); 的第一行中,您这样做:

if(a[i].hasChildNodes()){

但是,i 不是 a 的子元素的索引。它是一个 child 的 parent 的索引。因此,如果 a 的父级没有与 a 的子级数量相同的子级,您将超出索引。

我不知道你到底想在 adChilds() 中完成什么,所以我不确定要建议什么修复,但我想你如果想处理 a,你应该得到a的 child 的数量,并确保你只访问实际存在的数量


一些编码建议:

  1. 我强烈建议您使用真实的变量名。中间变量的名称如 abcz 是含糊不清的,使您的代码难以阅读。

  2. 所有的局部变量在第一次定义时(或者定义在函数的顶部)都应该以var开头,否则就变成了全局变量,自找麻烦,尤其是异步回调功能。

  3. 当您在第一次检查您的代码时看到对您来说并不明显的错误,然后在您最喜欢的调试器中设置一个断点并单步执行代码并检查变量的状态以了解您的错误原因重新收到错误。如果您不知道如何使用调试器,请学习。它们内置于大多数浏览器中,非常简单,对于高效调试来说绝对必不可少。

关于javascript - 未捕获的类型错误 : Cannot call method 'hasChildNodes' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14681051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com