簡體   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