这是我的代码 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]是未定义的。 最佳答案 问题:实际上,您正在使用错误的length循环。说明:由于menuLi.length低于menuUl.childNodes.length,因此menuUl.childNodes将包含li内的所有menuUl及其子级。因此,menuUl.childNodes.length是li元素的数量乘以每个li中的元素数量。因此,i会大于menuLi.length,这解释了为什么得到menuLi[i] is undefined的原因,因为如果li中只有5个menuUl,例如,您试图获得menuLi[8],则是menuLi[8]。解:因此,只需使用:var len = menuLi.length; 09-25 16:42