1

我需要根据用户的操作隐藏元素。如果他按“a only”,我可以说类似

for(i=0;i<document.getElementsByClassName("b").length;i++){
      document.getElementsByClassName("b")[i].style.visibility="hidden";
 }

但这会在列表中的元素之间留下空白空间(不可见的元素仍然占据空间),看起来很糟糕,有没有更好的方法可以做到这一点。

4

4 回答 4

4

试试 style.display="none"

使用 visibilty="hidden",元素仍将占用页面上的计算空间。

你也可以考虑使用jQuery。它使这些任务变得异常简单。

于 2012-07-18T20:17:10.820 回答
2

是的。您将visibilityCSS 属性设置为hidden. 这会阻止元素显示,但它仍会占用空间。

您想将display属性设置为none. 这会将其从显示中移除,停止它占用空间 - 有效地将其从文档中移除,至少就显示它而言。

for(i=0;i<document.getElementsByClassName("b").length;i++){
    document.getElementsByClassName("b")[i].style.display = "none";
}
于 2012-07-18T20:18:14.190 回答
1

使用display: none而不是visiblity: hidden. 该visibility属性只隐藏元素;该display属性实际上从布局中删除了元素。

于 2012-07-18T20:18:13.393 回答
0

对于visibility:hidden,javascript解析器将解析元素css属性并隐藏,它实际上存在于dom上,但用户看不到。对于 display: none,当 javascript 解析器找到具有显示的元素时,它只是忽略该元素并继续前进。所以你必须用户 display: none;

于 2013-04-20T02:43:59.713 回答