当我编写脚本时,它显示类型错误:menuLi[i] 未定义

When i write the script it shows TypeError: menuLi[i] is undefined

本文关键字:menuLi 错误 未定义 类型 显示 脚本      更新时间:2023-09-26

这是我的代码

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,因为如果你在menuUl中只有 5 li,例如你试图得到menuLi[8],其中menuLi[8]undefined

溶液:

所以只需使用:

var len = menuLi.length;

您使用i1循环到menuUl.childNodes.length,但您直接索引到menuUl[i]。 你是说menuUl.childNodes[i]吗?