gpt4 book ai didi

javascript - 隐藏整个表格会调整它的大小

转载 作者:太空宇宙 更新时间:2023-11-04 14:25:10 24 4
gpt4 key购买 nike

有一个带有简单表格和 js 代码的 HTML 页面来显示/隐藏它:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>title</title>
<script type="text/javascript">


function showErrorSteps()
{
var el = document.getElementById("t1");

if(el.style.display=="none")
{
el.style.display="block";
}
else
{
el.style.display="none";
}
}

</script>
</head>
<body>

<br />
<span onclick="showErrorSteps()">[click]</span>
<br />
<br />

<table id="t1" border="1" width="100%" style="table-layout: fixed">
<tr>
<td>s</td>
<td>d</td>
<td>a</td>
</tr>
</table>
</body>
</html>

发生的情况是,在 Mozilla 上,单击两次后表格会调整大小(即使使用 table-layout: fixed css)。 IE 运行良好。

最佳答案

表格不应设置为 display: block .表格行和单元格也不应该。它们具有不同的显示值。我的建议?不要这样做。使用类:

.hidden {
display: none;
}

并从表中动态添加和删除它,以避免在您显示的元素上设置正确的显示类型时出现问题。

编辑:澄清关于为什么这样做以及发生了什么的评论。试试这个:

<table>
<tr>
<td>Cell 1</td>
<td style="display: block;">Cell 2</td>
</tr>
</table

它会(或应该)搞砸您的表格布局。为什么因为一个<td>默认情况下,元素有 display: table-cell不是block .表是一样的。他们有 display: table .

取消设置 CSS 属性是……有问题的。

因此,您最好使用类来设置和取消设置属性。它更容易更改(该类驻留在 CSS 文件中而不是代码),避免了将值设置回正确的原始值等问题,并且通常提供更清晰的解决方案,尤其是在与 jQuery 等库一起使用时。在 jQuery 中,您可以:

$("table").toggleClass("hidden");

完成。

或者您可以使用 addClass()removeClass()如果这样更合适。例如:

<input type="button" id="hide" value="Hide Table">
...
<table id="mytable">
...

$(function() {
$("#hide").click(function() {
if ($("#mytable").is(".hidden")) {
$("#hide").val("Hide Table");
$("#mytable").removeClass("hidden");
} else {
$("#hide").val("Show Table");
$("#mytable").addClass("hidden");
}
});
});

这样您就有了一个健壮、简洁且易于理解的解决方案(一旦您了解了 jQuery 语法,这不会花那么长时间)。

直接使用 Javascript 是 2002 年的事情了。:-)

关于javascript - 隐藏整个表格会调整它的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/556789/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com