javascript隐藏div

Dor*_*ori 8 html javascript

我想能够有一个javascript函数,为我隐藏div.例如,我有类似的东西

<div id='container'> 
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
    <div class='item'></div>
</div>
Run Code Online (Sandbox Code Playgroud)

并且我希望该函数在说出前3后隐藏每个'item'类元素.我将如何解决这个问题?

谢谢你的帮助

kar*_*m79 8

在JS中,你可以做这样的事情,只要项目div是容器div的唯一子项:

var itemDivs = document.getElementById("container").children;
for(var i = 0; i < itemDivs.length; i++) {   
    if(i > 2) {
        itemDivs[i].style.display = 'none';   
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里试试:http://jsfiddle.net/eY9ZD/

否则,你可以这样做:

var divs = document.getElementById("container").getElementsByTagName("div");
for(var i = 0; i < itemDivs.length; i++) {   
    if(i > 2 && divs[i].className == 'item') {
        itemDivs[i].style.display = 'none';   
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里试试:http://jsfiddle.net/6TcWE/

最后,如果jQuery是一个选项,那么使用gt选择器就有一个单行:

$("#container div.item:gt(2)").hide();
Run Code Online (Sandbox Code Playgroud)

在这里试试:http://jsfiddle.net/J8wK6/


Fel*_*ing 5

使用简单的JavaScript类似于:

function hideElements(elements, start) {
    for(var i = 0, length = elements.length; i < length;i++) {
        if(i >= start) {
            elements[i].style.display = "none";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

var elements = document.getElementById('container').getElementsByClassName('item');
hideElements(elements , 3);
Run Code Online (Sandbox Code Playgroud)

参考:getElementById,getElementsByClassName

更新:

有趣的是,IE8似乎支持更强大的querySelectorAll()功能.所以,如果您不关心<IE8,那么您也可以这样做:

var elements = document.querySelectorAll('#container .item');
hideElements(elements , 3);
Run Code Online (Sandbox Code Playgroud)

不幸的是,没有"一个"解决方案可以在所有浏览器中选择所需的元素.如果您不想考虑跨浏览器兼容性,请考虑使用jQuery作为@karim建议.