【问题标题】:JavaScript show hide function layout issue firefox chromeJavaScript 显示隐藏功能布局问题 firefox chrome
【发布时间】:2012-05-21 01:13:45
【问题描述】:

我有一个 asp.net gridview,我在其中使用所选复选框上的“onclick”隐藏和显示列。 单击时,隐藏的列在 IE 中显示良好,但在 Chrome、Firefox 中它们重叠。我一定遗漏了一些东西,就好像它们被添加到同一列中一样。由于我是新手,所以我可以发布屏幕截图。

非常感谢任何帮助。

function showColumn(r,grid) {

rows = document.getElementById("GridView1").rows;
drop = document.getElementById(grid);
if (drop.checked == true) {

    for (i = 0; i < rows.length; i++) {
        rows[i].cells[r].style.display = "block";

        }
    }

else if (drop.checked == false) {
    for (i = 0; i < rows.length; i++) {
        rows[i].cells[r].style.display = "none";

        }
    }
}

<p>
    <asp:CheckBox ID="CheckBox1" runat="server" onclick="showColumn(2,'CheckBox1')" 
        Text="Show Option Name" />
</p>
<p>
    <asp:CheckBox ID="CheckBox2" runat="server" onclick="showColumn(1,'CheckBox2')" 
        Text="Show ID" />
</p>

【问题讨论】:

    标签: c# javascript asp.net gridview


    【解决方案1】:

    而不是使用:

    rows[i].cells[r].style.display = "block";
    

    ...要显示表格单元格,请尝试将 display 属性设置为空字符串,以便它返回默认值:

    rows[i].cells[r].style.display = "";
    

    【讨论】:

      【解决方案2】:

      尝试使用visibility:hidden(和visibility:visible)而不是display css 属性。与display:none 元素不同,visibilty:hidden 元素即使不可见也仍在流中,因此它们不会与其他元素重叠。

      【讨论】:

      • 所以这一行:rows[i].cells[r].style.display = "block"; 变为:rows[i].cells[r].style.visibility = "visible";,而以下行:rows[i].cells[r].style.display = "none"; 变为:rows[i].cells[r].style.visibility = "hidden";
      • 感谢您的回复,这确实有效,但它使列空间成为每个之间的空白,作为空白。
      • 好的,我不太了解您的需求,无论如何用户 nivlam 在他的回答中指出了正确的解决方案:-)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-03
      • 1970-01-01
      • 1970-01-01
      • 2022-10-23
      相关资源
      最近更新 更多