【发布时间】:2016-10-02 04:26:14
【问题描述】:
我在不使用任何 JQuery 的情况下重建页面,我需要在不使用 display none 的情况下隐藏 div。我隐藏的 div 保存来自 jotform 的表单,并且 display none 属性破坏了我在 Firefox 上的表单。我的解决方案是使用纯 javascript 并使用可见性和最大高度切换显示。
这是我的脚本:
function showDiv(that) {
var len = document.getElementsByTagName('div').length;
for (var i = 0; i < len; i++) {
document.getElementsByTagName('div')[i].style.visibility = "hidden";
document.getElementsByTagName('div')[i].style.maxHeight = "0px";
}
var val = that.value;
document.getElementById(val).style.visibility = "visible";
document.getElementById(val).style.maxHeight = "10px";
}
我的 CSS:
#div1, #div2, #div3 {
visibility: hidden;
max-height:0px;
}
.button {
background-color: #cb3778;
border: none;
color: white;
padding: 15px 32px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 22px;
cursor: pointer;
font-family: Arial;
}
我的简化代码:
<p><input type="button" class="button" name="Showdiv1" value="div1" onclick="showDiv(this)" />
<input type="button" class="button" name="Showdiv2" value="div2" onclick="showDiv(this)" />
<input type="button" class="button" name="Showdiv3" value="div3" onclick="showDiv(this)" /></p>
<div id="0">Click a button to start</div>
<div id="div1">div1</div>
<div id="div2">div2</div>
<div id="div3" style="margin-top:1500px;">div3</div>
这是一个工作演示:https://jsfiddle.net/cgrouge/a4wehtcd/2/
如您所见,由于 div 只是隐藏的,因此您仍然可以向下滚动页面到内容可见的位置。在内容可见之前,我不想翻页滚动。有解决办法吗?
【问题讨论】:
-
这就是 display: none 的用途,你为什么不想使用它?
-
@KWeiss 显示没有人破坏我在 Firefox 上的表单。我已经与 jotform 支持人员进行了交谈,不幸的是,他们无法帮助我处理我的原始登录页面。他们把我引到这个页面来解释这个错误:bugzilla.mozilla.org/show_bug.cgi?id=548397
标签: javascript html hidden