Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript递归问题_Javascript_Recursion - Fatal编程技术网

javascript递归问题

javascript递归问题,javascript,recursion,Javascript,Recursion,我正在编写一个js递归函数来查找用户单击的元素的所有祖先。我的代码如下: /**a global variable.*/ var anc; function getAncestors(e){ var ele = e.target; var parentName = ele.parentNode.name; anc +=bracket(parentName); if (parentName.toLowerCase() == "undefined" ) return;

我正在编写一个js递归函数来查找用户单击的元素的所有祖先。我的代码如下:

/**a global variable.*/
var anc; 

function getAncestors(e){  
 var ele = e.target; 
 var parentName = ele.parentNode.name;    
 anc +=bracket(parentName); 

 if (parentName.toLowerCase() == "undefined" ) return;    
 else getAncestors(parent);     
}
var anc = [];

function getAncestors(element) {
  if (element.parentNode) {
    anc.push(element.parentNode);
    getAncestors(element.parentNode);
  }
}
我使用firefox运行它,但是错误控制台中有一条错误消息,错误:ele.parentNode未定义

还有,当我重置 anc=''; 它也不起作用

谢谢


Paul

您可能想看看他们是如何在jQuery中实现该函数的。

根据Javascript标准,未定义的值没有名称属性-因此,与其尝试一次性获取名称,不如执行var parent=e.target.parentNode;如果这还没有定义,那就保释吧

父项未定义。您可能是指ele.parentNode,但请参见下文。 根据名称约定和.target,我认为e是一个事件。但是你通过了家长,这可能不是一个事件。 在获取ele.parentNode的属性之前,可能需要检查它是否有效。
你应该像这样打破递归

if(ele.parentNode) return;

firefox不支持parentNode.name

请尝试以下操作:

/**a global variable.*/
var anc; 

function getAncestors(e){  
 var ele = e.target; 
 var parentName = ele.parentNode.name;    
 anc +=bracket(parentName); 

 if (parentName.toLowerCase() == "undefined" ) return;    
 else getAncestors(parent);     
}
var anc = [];

function getAncestors(element) {
  if (element.parentNode) {
    anc.push(element.parentNode);
    getAncestors(element.parentNode);
  }
}
变量父项来自哪里?括号函数的作用是什么?父变量可能是另一个由其他变量设置的全局变量吗?如果!埃勒…,是吗?