切换显示:没有类的JavaScript(没有jQuery)中的所有标签:是否可能?

时间:2013-06-02 21:58:08

标签: javascript toggle

我已经阅读了类似的帖子,但我只发现它在HTML中添加类来执行我想要的操作,所以,基本上我有一个按钮,当我想点击它时会隐藏所有代码HTML标记,以及当我再次点击它显示它们。由于我在页面中有很多代码标记,因此为每个代码添加一个类会花费很多。我一直在尝试一些诸如

之类的东西
if(document.getElementsByTagName("CODE").style.display === "block"){
document.getElementsByTagName("CODE").style.display = "none"
}

和周围的东西,所有相似的代码,但他们都使我的浏览器崩溃或无法正常工作。我的问题是,是否真的必须使用类名并检查它的类名是否可以比较,因为我在上面的代码中“做”了所有标签的显示内容? (可能使用for循环每个元素循环,我也尝试过,没有结果。) 到目前为止,我用我的一些知识尝试了所有可能的事情(我还在研究javascript)。我真的很想知道我是否正在尝试做一些非常先进的事情,或者我只是不知道如何做到这一点。

谢谢,我希望没有像这样的另一个问题,我已经阅读了所有建议的内容,没有一个(除了一个它说使用类)就是这样。

他们都建议添加课程,所以我觉得我想尝试做一些真的不可能的事情。我还没有进入jQuery,所以请不要谈论它,谢谢。 (首先我必须学习好的JavaScript)

3 个答案:

答案 0 :(得分:3)

你必须遍历document.getElementsByTagName("CODE")的结果,它是一个类似数组的变量。它是一个jQuery功能,允许您将.css()写入对象列表并将它们全部处理完毕。你需要像

这样的东西
ar = document.getElementsByTagName("code");
for (i = 0; i < ar.length; ++i)
   ar[i].style.display = "none";

如果您需要切换code可见性,请使用此代码

ar = document.getElementsByTagName("code"); 
for (i = 0; i < ar.length; ++i)
{ 
   if(ar[i].style.display != "none") //the element is visible
   {
      ar[i].style.display = "none";
   } 
   else
   {
      ar[i].style.display = "block"; //If you need to make it block explicitly, otherwise ""
   } 
} 

请注意,style.display属性最初为空,inline标记的默认值为code,但可以明确设置为其他值。将其重置为''会导致恢复状态。

如果您需要在不修改显示模式的情况下来回更改可见性,则需要保存以前的模式(code标记不仅可以显示在{{1模式)。可以这样做:

block

答案 1 :(得分:1)

正如Aneri所说,getElementsByTagName会返回NodeList,您可以按索引进行迭代。

请注意, display 属性只有一个值,如果它已被显式设置,它不会从CSS继承一个值,所以你应该做类似下面的事情,这将隐藏所有的CODE元素,如果他们的显示器尚未设置为 none 并显示它们:

var element, elements = document.getElementsByTagName("CODE");

for (var i=0, iLen=elements.length; i<iLen; i++) {
  element = elements[i];

  // If element hasn't been hidden, hide it
  if (element.style.display == '') {
    element.style.display = 'none';

  // Otherwise show it
  } else {
    element.style.display = '';
  }
}

请注意,您应该将显示值返回到“”(空字符串),以便元素返回其默认值或继承值,这可能不是“阻止”。

此外,如果子元素的父元素具有 display:none ,则会隐藏子元素。

答案 2 :(得分:0)

您可以仅向BODYHTML元素添加一个类,并通过以下方式将所需的样式附加到此类上下文选择器。例如:

HTML.hide-code CODE {display: none; }