2016-04-27 43 views
1

這是我的代碼 當我寫腳本它顯示類型錯誤:menuLi [i]是未定義

var menuLi=[]; 
$(window).load(function() { 
var menuUl = document.getElementById("sub");           
menuLi = menuUl.getElementsByTagName("LI"); 
var len = menuUl.childNodes.length; 

    nSpan = document.createElement("SPAN"); 
    var findUl; 

    for (var i = 0; i < len; i++) { 
     findUl = menuLi[i].getElementsByTagName("UL"); 
     liLen = findUl.length; 
     if (liLen > 0) { 
      menuLi[i].classList.add("myNew"); 
     } 
    } 
}); 

以上是我代碼拋出錯誤menuLi [i]是未定義的。

+0

你能鏈接html代碼嗎? – Ozrix

+0

你不考慮'loop'中的'menuLi'長度 – Rayon

+0

你想要做什麼? –

回答

1

問題:

實際上你使用了錯誤的length循環。

說明:

因爲menuLi.lengthmenuUl.childNodes.length走低,因menuUl.childNodes將包含內部menuUl和他們的孩子全部li

所以menuUl.childNodes.lengthli元素的數量乘以每個li中元素的數量。

所以i將獲得比menuLi.length大,這可以解釋爲什麼你得到menuLi[i] is undefined,因爲如果你只有5 limenuUl和比如你試圖讓menuLi[8],其中menuLi[8]undefined

解決方案:

所以只需使用:

var len = menuLi.length; 
0

您從1循環使用imenuUl.childNodes.length,但你索引直入menuUl[i]。你的意思是menuUl.childNodes[i]

相關問題