繁体   English   中英

JavaScript递归问题

[英]A javascript recursion problem

我正在编写一个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 =''; 它也不起作用。

谢谢!

保罗

  1. parent未定义。 您可能已使用ele.parentNode ,但请参见下文。
  2. 按照名称约定和.target ,我认为e是一个事件。 但是您传递了parent ,这可能不是事件。
  3. 您可能想要在获取ele.parentNode属性之前检查其是否有效。

您可能想看看它们如何在jQuery中实现parents函数。

一个undefined值,每使用Javascript标准, 没有一个name属性-因此而不是试图让name一饮而尽,只是做一个var parent = e.target.parentNode; 如果那是未定义的,请保释!

你应该这样破坏递归

if(ele.parentNode) return;

Firefox不支持parentNode.name

也许尝试这样的事情:

var anc = [];

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM