单击修复时显示隐藏 div

Show hidden div on click fix

我在不使用任何 JQuery 的情况下重建页面,我需要在不使用显示 none 的情况下隐藏 divs。我隐藏的 divs 持有来自 jotform 的表格,而显示 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 只是隐藏的,您仍然可以向下滚动页面到内容可见时的位置。在内容可见之前,我不想翻页滚动。有解决办法吗?

你可以使用溢出:隐藏

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.height = "0px";
       document.getElementsByTagName('div')[i].style.overflow = "hidden";
  }
  var val =  that.value;
  document.getElementById(val).style.visibility = "visible";
  document.getElementById(val).style.height = "10px";
  document.getElementById(val).style.overflow = "visible";
}

示例如下:jsfiddle