Javascript 隐藏div的快速方法?

Javascript 隐藏div的快速方法?,javascript,html,css,Javascript,Html,Css,我有下面一行代码 document.getElementById("divName").style.display = "none"; 我如何一次隐藏一堆名称完全不同的层,而不经常编写代码行 谢谢 如果它们都具有相同的父/祖先,请尽可能隐藏父/祖先。 获取对该元素的引用,将它们放入数组并在其上循环。 如果它们都具有相同的父/祖先,请尽可能隐藏父/祖先。 获取对该元素的引用,将它们放入数组并在其上循环。 选项1-创建一个函数 选项2-隐藏父元素 如果所有元素都可以放在父元素内,或者已经放在父元素

我有下面一行代码

document.getElementById("divName").style.display = "none";
我如何一次隐藏一堆名称完全不同的层,而不经常编写代码行

谢谢

如果它们都具有相同的父/祖先,请尽可能隐藏父/祖先。 获取对该元素的引用,将它们放入数组并在其上循环。 如果它们都具有相同的父/祖先,请尽可能隐藏父/祖先。 获取对该元素的引用,将它们放入数组并在其上循环。 选项1-创建一个函数 选项2-隐藏父元素 如果所有元素都可以放在父元素内,或者已经放在父元素内,则可以简单地隐藏该父元素

备选方案3——使用框架 像jQuery或MooTools这样的javascript框架将有一个方便的编码约定,比如.hide

:-见

-见

此外,框架还提供了用于更复杂情况的工具,允许您选择元素或特定类的子元素并遍历它们。当使用动态创建内容的页面时,它们非常方便

`

选项1-创建函数 选项2-隐藏父元素 如果所有元素都可以放在父元素内,或者已经放在父元素内,则可以简单地隐藏该父元素

备选方案3——使用框架 像jQuery或MooTools这样的javascript框架将有一个方便的编码约定,比如.hide

:-见

-见

此外,框架还提供了用于更复杂情况的工具,允许您选择元素或特定类的子元素并遍历它们。当使用动态创建内容的页面时,它们非常方便


`

如果它们来自同一个类,则可以选择该类的所有元素,并在其中循环。如果它们都是同一父对象,则可以选择所有子对象,循环遍历它们,必要时进行筛选并以这种方式隐藏它们。

如果它们来自同一类,则可以选择该类的所有元素并循环遍历它们。如果它们都是同一父对象,则可以选择所有子对象,循环遍历它们,必要时进行筛选,并以这种方式隐藏它们

var divsToHide = ["thisDiv", "thatDiv", "divName"];
for (var i=0; i<divsToHide.length; ++i)
{
    var div = document.getElementById(divsToHide[i]);
    if (div) div.style.display = "none";
}
当然,在这种情况下,您也可以通过CSS在类上设置display:none

当然,在这种情况下,您也可以通过CSS在类上设置display:none。

很好。还有第三种方法:因为它们都共享一个共同的祖先主体,所以可以通过向主体添加一个类并在CSS中使用与实际元素匹配的规则来隐藏它们,如下所示:

body.foo table {
    display: none;
}
如果将类foo添加到body中,则会隐藏页面上的每个表,如下所示:

document.body.className += " foo";
…然后再次显示表格(如果已删除):

document.body.className =
    document.body.className.replace(/\bfoo\b/, '');
当然,该选择器的识别能力要高得多:

body.foo div.magic > table {
    display: none;
}
这将只隐藏作为具有类magic的div的直接子级的表元素,并且仅当body具有类foo时才隐藏

离题:如果上述方法不适合,而且在很多情况下也不适合,那么像、、或这样的JavaScript库可以使以Felix提到的方式操作元素集比单独操作要容易得多。

很好。还有第三种方法:因为它们都共享一个共同的祖先主体,所以可以通过向主体添加一个类并在CSS中使用与实际元素匹配的规则来隐藏它们,如下所示:

body.foo table {
    display: none;
}
var names = ['divName1', 'divName2','divName3'];
for ( i in names ) document.getElementById(names[i]).style.display = "none";
如果将类foo添加到body中,则会隐藏页面上的每个表,如下所示:

document.body.className += " foo";
…然后再次显示表格(如果已删除):

document.body.className =
    document.body.className.replace(/\bfoo\b/, '');
当然,该选择器的识别能力要高得多:

body.foo div.magic > table {
    display: none;
}
这将只隐藏作为具有类magic的div的直接子级的表元素,并且仅当body具有类foo时才隐藏


离题:如果上述方法不适合,而且在很多情况下也不适合,那么像、、或这样的JavaScript库可以使以Felix提到的方式操作元素集比单独操作要容易得多。

不,它们没有相同的父级!不,他们的父母不一样!for..in不用于循环数组索引:for..in不用于循环数组索引:
var names = ['divName1', 'divName2','divName3'];
for ( i in names ) document.getElementById(names[i]).style.display = "none";