所以我有这样的代码:
function show_all()
{
document.getElementByClassName('login').style.display = 'inline';
document.getElementById('button-hide').style.display = 'inline';
document.getElementById('button-show').style.display = 'none';
};
function hide_all()
{
document.getElementByClassName('login').style.display = 'none';
document.getElementById('button-hide').style.display = 'none';
document.getElementById('button-show').style.display = 'inline';
};
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav>
<input type="button" value="Show login Buttons" id="button-show" onclick="show_all();"/>
<input type="button" value="Hide login Buttons" id="button-hide" onclick="hide_all();"/>
</nav>
<p class="login">Username:</p>
<img src="un.png" class="login"/>
<p class="login">Password:</p>
<p>Something not ment to be hidden.</p>
<img src="pass.png" class="login"/>
而且我需要显示/隐藏整个类;我有大约50个包含类“login”元素的块,我希望只使用JavaScript来显示它。
9条答案
按热度按时间pkln4tw61#
显示:
隐藏:
inkz8wg92#
现在有点晚了,但这能看到一些风景。为什么不:
drnojrws3#
改变每个元素的
display
是一个坏主意。只要切换所有这些login
的 Package 器的类,并在CSS中设置display
。ghhkc1vu4#
一个建议,为什么不使用JQuery。它非常简单和容易,样式可以是无/内联/块等
zkure5ic5#
我遇到了同样的问题,在几乎没有JavaScript经验的情况下,我在一天之内想出了这个解决方案。所以如果有什么问题,请注意并评论。我发现了
getElementsByClassName()
方法,它返回一个类似数组的集合对象,该对象包含所有具有给定类名的子元素,更多关于getElementsByClassName()的内容。此外,我希望能够通过一个按钮来完成,所以这可能取决于你是否需要两个按钮来隐藏或显示。你可以用classList.add()
和classList.remove()
来完成。创建CSS类:
然后使用这个函数按类定位HTML元素:
for循环用于获取该类的所有元素,并使用classList.toggle为它们切换.hidden类。
您还可以使用
querySelectorAll()
,它返回文档中与指定CSS选择器路径匹配的所有元素。另一个选项是
forEach()
,而不是for循环:3gtaxfhh6#
您可以在找到CSS规则后使用以下函数对其进行更改
并把它应用到
我没有注意到其他人做过这种事情,所以请在使用前检查一下。@br3t的回复方式要平常得多。
vfh0ocws7#
mtb9vblg8#
我只是使用了jQuery的离线版本。
deyfvvtc9#
我也遇到了这个问题。使用jQuery确实可以帮助消除使用Id标记或自定义JavaScript函数的单调性。
您所需要做的就是将类添加到每个元素中,然后在javascript函数中使用一行jQuery来隐藏或显示这些类。
超文本:
JavaScript语言: