如何使用JavaScript使DIV可见和不可见


113

你能做点什么

function showDiv()
{
    [DIV].visible = true;
    //or something
}

1
为什么不只使用Jquery?.hide()吗?
coderama 2012年

我会使用它作为div的名称吗,所以如果div被命名为test,我会这样做test.hide()吗?

8
@JackStone:不,仅当您已经在使用jQuery库时。有些人只是喜欢在每个JavaScript问题上进行推广。即使您是,.hide()也不会设置可见性。设置显示。


8
对于这样的事情,一个好的答案应该既包含一个普通的JS解决方案,又应显示一个使用库的优点 -在这种情况下,在使用一个元素显示时不必处理内联vs块display
ThiefMaster

Answers:


139

如果[DIV]是元素,则

[DIV].style.visibility='visible'

要么

[DIV].style.visibility='hidden' 

16
visibility副作用是保留了元素占用的空间。这可能会或可能不会是OP想要的东西
佩卡·

1
在显示[DIV]的地方,我要输入div的名称吗?

20
不,使用document.getElementById('id-of-the-div')代替[DIV]
ThiefMaster

@JackStone:这取决于您的div“名称”的含义。如果是引用div的变量,则为是。

1
那么,如果我的div是名字testdiv,那会是document.getElementById('testdiv').style.visibility = 'hidden';吗?

124

假设您不使用jQuery之类的库。

如果您还没有对DOM元素的引用,请使用 var elem = document.getElementById('id');

然后,您可以设置该元素的任何CSS属性。要显示/隐藏,可以使用两个属性:displayvisibility,其效果略有不同:

调整style.display看起来好像根本不存在任何元素(“已删除”)。

elem.style.display = 'none'; // hide
elem.style.display = 'block'; // show - use this for block elements (div, p)
elem.style.display = 'inline'; // show - use this for inline elements (span, a)

style.visibility实际上会使div仍然存在,但为“全空”或“全白”

elem.style.visibility = 'hidden'; // hide, but lets the element keep its size
elem.style.visibility = 'visible';

如果您使用的是jQuery,则只要设置display属性,您就可以更加轻松地完成此操作:

$(elem).hide();
$(elem).show();

它将自动使用适当的display值;您不必关心元素类型(内联或块)。另外,elem不仅可以是DOM元素,还可以是选择器,例如#id.class或其他任何有效的CSS3(及更多)!


我更喜欢您的答案,但我想您需要使用elem.style.display ='none'进行一些更正;
索米尔2014年


28

您可以使用visibility或,display但必须将更改应用于div.style对象,而不是div对象本身。

var div = document.getElementById('div_id');

// hide
div.style.visibility = 'hidden';
// OR
div.style.display = 'none';

// show
div.style.visibility = 'visible';
// OR
div.style.display = 'block';

div.style.visibility = false在Chrome中不适用于我。而且该true零件似乎在意外地工作,因为它使属性未设置(虽然不是我的不赞成)
Pekka 2012年

无论是display也不visibility是布尔属性。除此之外,noneblock需要加引号,因为它们都是字符串..
ThiefMaster

标签的值错误。这些现在可以工作了,不,我不会摆弄这个,这太简单了。
zellio

4

您可以使用DOM函数:setAttribute和removeAttribute。在下面的链接中,您有一个如何使用它们的示例。

setAttribute和removeAttribute函数

快速浏览:

hide:    document.getElementById("myDiv").setAttribute("hidden","");
unhide:  document.getElementById("myDiv").removeAttribute("hidden");

2
您能否提高答案?带有示例和解释。
加尔·巴宾(GaëlBarbin)

1

您可以使用opacity类似于,visibility 但可以平滑过渡并控制其他参数(例如高度)(为简化代码段,我将js逻辑直接放在html中-不要在生产代码中这样做)



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.