Проблема рекурсии JavaScript - PullRequest
       16

Проблема рекурсии JavaScript

0 голосов
/ 24 октября 2009

Я пишу рекурсивную функцию 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 ]

4 голосов
/ 24 октября 2009
  1. parent не определено. Возможно, вы имели в виду ele.parentNode, но смотрите ниже.
  2. По соглашению имен и .target, я понимаю, e - это событие. Но вы передаете parent, что, вероятно, не событие.
  3. Возможно, вы хотите проверить, что ele.parentNode является действительным, прежде чем получить его свойства.
2 голосов
/ 24 октября 2009

Значение undefined, в соответствии со стандартами Javascript, не имеет атрибута a name - поэтому вместо попытки получить name за один раз, просто выполните var parent = e.target.parentNode; и выручить, если ТО не определено!

2 голосов
/ 24 октября 2009

Возможно, вы захотите взглянуть на то, как они реализуют функцию parents в jQuery.

0 голосов
/ 24 октября 2009

Может быть попробовать что-то вроде этого:

var anc = [];

function getAncestors(element) {
  if (element.parentNode) {
    anc.push(element.parentNode);
    getAncestors(element.parentNode);
  }
}
0 голосов
/ 24 октября 2009

Вы должны прервать рекурсию следующим образом

if(ele.parentNode) return;

parentNode.name не поддерживается Firefox

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...