Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么div隐藏而不显示?_Javascript_Html - Fatal编程技术网

Javascript 为什么div隐藏而不显示?

Javascript 为什么div隐藏而不显示?,javascript,html,Javascript,Html,我正在尝试制作一个程序,当按下一个按钮时,调用一个函数,除了一个div之外,所有的东西都隐藏了。但是我不明白为什么这不起作用。如果有一些简单的解决方法,我将不胜感激,但我可能在这个问题上完全错了 函数myFunction(){ var x=document.getElementById(“div1”); var y=document.getElementById(“主”); y、 style.display=“无”; x、 style.display=“block”; }; #第1部分{ 宽度

我正在尝试制作一个程序,当按下一个按钮时,调用一个函数,除了一个div之外,所有的东西都隐藏了。但是我不明白为什么这不起作用。如果有一些简单的解决方法,我将不胜感激,但我可能在这个问题上完全错了

函数myFunction(){
var x=document.getElementById(“div1”);
var y=document.getElementById(“主”);
y、 style.display=“无”;
x、 style.display=“block”;
};
#第1部分{
宽度:50px;
高度:50px;
背景颜色:蓝色;
}
#第二组{
宽度:50px;
高度:50px;
背景色:红色;
}
#第三组{
宽度:50px;
高度:50px;
背景颜色:绿色;
}

仅显示第1部分

不要隐藏容器,否则它将隐藏其所有子容器

函数myFunction(){
var x=document.getElementById(“div1”);
var y=document.getElementById(“div2”);
y、 style.display=“无”;
x、 style.display=“block”;
};
#第1部分{
宽度:50px;
高度:50px;
背景颜色:蓝色;
}
#第二组{
宽度:50px;
高度:50px;
背景色:红色;
}

仅显示第1部分

不要隐藏容器,否则它将隐藏其所有子容器

函数myFunction(){
var x=document.getElementById(“div1”);
var y=document.getElementById(“div2”);
y、 style.display=“无”;
x、 style.display=“block”;
};
#第1部分{
宽度:50px;
高度:50px;
背景颜色:蓝色;
}
#第二组{
宽度:50px;
高度:50px;
背景色:红色;
}

仅显示第1部分

无需隐藏容器。只需隐藏目标div:

function myFunction() {
  var x = document.getElementById("div1");
  var y = document.getElementById("div2"); //  change it to div2 NOT main
  y.style.display = "none";
  x.style.display = "block";
};

没有必要隐藏容器。只需隐藏目标div:

function myFunction() {
  var x = document.getElementById("div1");
  var y = document.getElementById("div2"); //  change it to div2 NOT main
  y.style.display = "none";
  x.style.display = "block";
};

您正在隐藏包含所有3个div的
main

函数myFunction(){

var x=document.getElementById(“div1”);//您正在隐藏包含所有3个div的
main

函数myFunction(){

var x=document.getElementById(“div1”);//您真的应该使用类和
addEventListener
,因为不建议使用内联脚本,也不建议内联更改样式

按钮上
单击,将类添加到
,然后使用其CSS规则隐藏所选的
div
,例如,使用
第n个子(n+2)
:非(:第一个子)

堆栈片段

document.querySelector('button')。addEventListener('click',function(){
document.getElementById(“main”).classList.toggle('hidealButdiv1');
})
#第1部分{
宽度:50px;
高度:50px;
背景颜色:蓝色;
}
#第二组{
宽度:50px;
高度:50px;
背景色:红色;
}
#第三组{
宽度:50px;
高度:50px;
背景颜色:绿色;
}
#main.hidealbutdiv1 div:n子级(n+2){/*或div:not(:第一个子级)*/
显示:无;
}

仅显示第1部分

您应该真正使用一个类,而不是
addEventListener
,因为不建议使用内联脚本,也不建议内联修改样式

按钮上
单击,将类添加到
,然后使用其CSS规则隐藏所选的
div
,例如,使用
第n个子(n+2)
:非(:第一个子)

堆栈片段

document.querySelector('button')。addEventListener('click',function(){
document.getElementById(“main”).classList.toggle('hidealButdiv1');
})
#第1部分{
宽度:50px;
高度:50px;
背景颜色:蓝色;
}
#第二组{
宽度:50px;
高度:50px;
背景色:红色;
}
#第三组{
宽度:50px;
高度:50px;
背景颜色:绿色;
}
#main.hidealbutdiv1 div:n子级(n+2){/*或div:not(:第一个子级)*/
显示:无;
}

仅显示第1部分

为了隐藏除
div1
之外的
main
的所有子级,必须直接隐藏
div1
的所有同级

获取兄弟姐妹的函数如下所示:

function getSiblings(elem) {
        var siblings = [];
        var sibling = elem.parentNode.firstChild;
        var skipMe = elem;
        for ( ; sibling; sibling = sibling.nextSibling ) 
           if ( sibling.nodeType == 1 && sibling != skipMe )
              siblings.push( sibling );
        return siblings;
    }
您的按钮单击处理程序:

function myFunction() {
      var x = document.getElementById("div1");
      var siblings = getSiblings(x);
      siblings.forEach(function(y){
        y.style.display = "none";
      });
    }

为了隐藏除
div1
之外的
main
的所有子级,您必须直接隐藏
div1
的所有同级

获取兄弟姐妹的函数如下所示:

function getSiblings(elem) {
        var siblings = [];
        var sibling = elem.parentNode.firstChild;
        var skipMe = elem;
        for ( ; sibling; sibling = sibling.nextSibling ) 
           if ( sibling.nodeType == 1 && sibling != skipMe )
              siblings.push( sibling );
        return siblings;
    }
您的按钮单击处理程序:

function myFunction() {
      var x = document.getElementById("div1");
      var siblings = getSiblings(x);
      siblings.forEach(function(y){
        y.style.display = "none";
      });
    }

显示中的元素:无法显示任何元素。您的代码根本不隐藏div2。这是一个很好的例子,说明了为什么您应该使用描述性变量名称隐藏父项并显示其子项的唯一方法是使用
可见性
而不是
显示
@WilliamJones With
可见性
main
不会折叠到其内容高度,正如您在这把小提琴中所看到的,我将按钮放置在它的外部,以便您可以看到它的行为:显示
中的元素:none
元素无法显示。您的代码根本不隐藏div2。这是为什么应该使用描述性变量na的一个主要示例隐藏父对象并显示其子对象的唯一方法是使用
visibility
而不是
display
@WilliamJones With
visibility
main
不会折叠到其内容高度,正如您在这把小提琴中看到的,我将按钮放置在它的外部,以便您可以看到它的行为: