JavaScript - 隐藏所有其他 div

标签 javascript html

我有一些只有在点击链接后才可见的 div。如何关闭所有打开的 div,以便只有点击的 div 可见?
我正在使用这个 .js:

    function showhide(id){
        if (document.getElementById) {
        var divid = document.getElementById(id);
        divid.style.display = (divid.style.display=='block'?'none':'block');
        } }

        <a href="javascript:void(null)" onclick="showhide('features');">features</a>
<a href="javascript:void(null)" onclick="showhide('design');">design</a>
<a href="javascript:void(null)" onclick="showhide('create');">create</a>

谢谢 乌力

最佳答案

一种方法是添加一个类并根据该类查找元素以隐藏它们(如其他答案所示)

另一种方法是将元素的状态存储在一个对象中,并使用它来识别需要关闭的打开的元素。

var divState = {}; // we store the status in this object
function showhide(id) {
    if (document.getElementById) {
        var divid = document.getElementById(id);

        divState[id] = (divState[id]) ? false : true; // initialize / invert status (true is visible and false is closed)
        //close others
        for (var div in divState){
            if (divState[div] && div != id){ // ignore closed ones and the current
                document.getElementById(div).style.display = 'none'; // hide
                divState[div] = false; // reset status
            }
        }
        divid.style.display = (divid.style.display == 'block' ? 'none' : 'block');
    }
}

演示在 http://jsfiddle.net/gaby/LfzYc/

关于JavaScript - 隐藏所有其他 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8655741/

相关文章:

javascript - Safari 上的 HTML5 音频标签有延迟

html - 如何给三 Angular 形设置边框

javascript - 在javascript onclick中为标签添加样式

javascript - 重置标签的值

javascript - 如果文本大于文本框,则添加 CSS

javascript - 在 Jest 的函数内部模拟函数调用

html - 将圆形图像添加到方形 Div 的顶部中心

javascript - 动画滚动 Flex div 从左到右

javascript - 使菜单图标可从窗帘菜单中单击

javascript - Angular js : accessing $scope from jQuery