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";