javascript递归问题
我正在编写一个js递归函数来查找用户单击的元素的所有祖先。我的代码如下: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;
/**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);
}
}
变量父项来自哪里?括号函数的作用是什么?父变量可能是另一个由其他变量设置的全局变量吗?如果!埃勒…,是吗?