Javascript 为什么div隐藏而不显示?
我正在尝试制作一个程序,当按下一个按钮时,调用一个函数,除了一个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部分{ 宽度
函数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 Withvisibility
,main
不会折叠到其内容高度,正如您在这把小提琴中看到的,我将按钮放置在它的外部,以便您可以看到它的行为: