当我写脚本它显示类型错误:menuLi [i]是未定义
问题描述:
这是我的代码 当我写脚本它显示类型错误: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]是未定义的。
答
问题:
实际上你使用了错误的length
循环。
说明:
因为menuLi.length
比menuUl.childNodes.length
走低,因menuUl.childNodes
将包含内部menuUl
和他们的孩子全部li
。
所以menuUl.childNodes.length
是li
元素的数量乘以每个li
中元素的数量。
所以i
将获得比menuLi.length
大,这可以解释为什么你得到menuLi[i] is undefined
,因为如果你只有5 li
在menuUl
和比如你试图让menuLi[8]
,其中menuLi[8]
是undefined
。
解决方案:
所以只需使用:
var len = menuLi.length;
答
您从1
循环使用i
menuUl.childNodes.length
,但你索引直入menuUl[i]
。你的意思是menuUl.childNodes[i]
?
你能链接html代码吗? – Ozrix
你不考虑'loop'中的'menuLi'长度 – Rayon
你想要做什么? –