【发布时间】:2015-08-12 02:43:56
【问题描述】:
所以...我有这个带有两个 div、一个按钮、两个 css 类和一个 javascript 函数的小网页。
这个想法是,当按下按钮时,该函数会更改 div 的 css 类并通过漂亮的过渡隐藏它。当再次按下它时,它会做相反的事情:
HTML:
<div id="div1" >
<div id="div2" >
Here be HTML stuffs.
</div>
</div>
javascript:
hideNShow(){
var w = $('#div2');
var height = w.outerHeight();
if(document.getElementById("div1").className=="hidden")
document.getElementById("div1").className="visible";
document.getElementById("div1").style.height=height + "px";
} else if (document.getElementById("div1").className=="visible") {
document.getElementById("div1").className="hidden";
document.getElementById("div1").style.height=0 + "px";
}
}
还有 CSS 类:
.visible {
visibility: visible;
opacity: 1;
transition: all 1s ease;
}
.hidden {
visibility: hidden;
opacity: 0;
height:0;
overflow: hidden;
transition: all 1s ease;
}
按钮只是一个按钮,其功能在不同的 div 中引用。
我现在的问题是,如果 div1 已“隐藏”作为起始类 (),它可以正常工作(所有转换都按预期工作,并具有预期的延迟),但如果起始类是“可见的”,则第一次按下按钮时,div 会自动隐藏,忽略转换。
我环顾四周,一无所获。好像是第一个
编辑:修正了代码中带有 div 名称的拼写错误。
【问题讨论】:
-
您似乎在
document.getElementById("div").style.height=height + "px";这一行中缺少正确的id,因为它找不到带有id=div的元素 -
您对 div2 使用 jQuery,但为 div1 选择普通 JS。这很有趣:)
-
你应该有一些默认高度。将
height: auto添加到visible类并检查。而且默认情况下您似乎没有任何课程.. -
@RobSchmuecker:复制代码时打错了,对不起!
-
@Anarion:我得说我从其他开发人员那里继承了大部分代码,我正在做一些小的改动,所以......是的,任何事情都可能发生在这里......
标签: javascript html css