我正在编写一个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 =''; 它也没用。
谢谢!
保
答案 0 :(得分:4)
parent
未定义。您的意思可能是ele.parentNode
,但请参见下文。.target
,我认为e
是一个事件。但是你传递了parent
,这可能不是一个事件。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);
}
}