0

使用它来摆脱一个烦人的小“由”框,但它一直说“TypeError:表达式'divs [i]'[undefined]的结果不是一个对象。” 我如何解决它。

function damnwhitebox()
{
 var myBody = document.getElementsByTagName("body")[0];
 divs = myBody.getElementsByTagName("div");
    for(var i in divs)
    {
        if(divs[i].style.zIndex === 99999)
        {
            divs[i].style.display == "none";
        }
        if(divs[i].style.zIndex === "1000")
        {
            divs[i].style.display == "none";

        }
    }   
}
4

2 回答 2

3
    function damnwhitebox()
    {
     var myBody = document.getElementsByTagName("body")[0];
     divs = myBody.getElementsByTagName("div");
        for(var i =0 ; i <divs.length; i++ )
        {
            if(divs[i].style.zIndex === 99999)
            {
                divs[i].style.display = "none";
            }
            if(divs[i].style.zIndex === 1000)
            {
                divs[i].style.display = "none";
                alert(divs[i].innerHTML);

            }
        }   
    }

这将起作用。在您的代码中,您混合了 for in 和 for 循环的语法。使用这个。

For ... in 旨在与对象一起使用以迭代其属性。如果您打算将它与数组一起使用,您必须检查您没有向元素添加新属性。所以最好避免使用这种语法进行数组遍历。
而且你永远不应该在 DOM 数组上使用它(就像在这种情况下),因为许多 JavaScript 库确实扩展了 DOM。

于 2011-06-03T00:59:49.687 回答
2

此外,您可能希望将 == 更改为 =

divs[i].style.display = "none";
于 2011-06-03T01:08:21.697 回答