一个javascript递归问题

时间:2009-10-24 04:53:46

标签: 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;    
 else getAncestors(parent);     
}

我使用firefox运行它,但错误控制台中有一条错误消息,“错误:ele.parentNode未定义”。

另外,当我重置时 anc =''; 它也没用。

谢谢!

5 个答案:

答案 0 :(得分:4)

  1. parent未定义。您的意思可能是ele.parentNode,但请参见下文。
  2. 按名称惯例和.target,我认为e是一个事件。但是你传递了parent,这可能不是一个事件。
  3. 您可能希望在获取其属性之前检查ele.parentNode是否有效。

答案 1 :(得分:2)

您可能希望了解它们如何在jQuery中实现parents函数。

答案 2 :(得分:2)

根据Javascript标准,undefined值不会拥有 name属性 - 因此,而不是试图获得name一个gulp ,如果未定义,只需执行var parent = e.target.parentNode;并挽救!

答案 3 :(得分:0)

你应该像这样打破递归

if(ele.parentNode) return;
firefox

不支持

parentNode.name

答案 4 :(得分:0)

也许尝试这样的事情:

var anc = [];

function getAncestors(element) {
  if (element.parentNode) {
    anc.push(element.parentNode);
    getAncestors(element.parentNode);
  }
}