我已经阅读了类似的帖子,但我只发现它在HTML中添加类来执行我想要的操作,所以,基本上我有一个按钮,当我想点击它时会隐藏所有代码HTML标记,以及当我再次点击它显示它们。由于我在页面中有很多代码标记,因此为每个代码添加一个类会花费很多。我一直在尝试一些诸如
之类的东西if(document.getElementsByTagName("CODE").style.display === "block"){
document.getElementsByTagName("CODE").style.display = "none"
}
和周围的东西,所有相似的代码,但他们都使我的浏览器崩溃或无法正常工作。我的问题是,是否真的必须使用类名并检查它的类名是否可以比较,因为我在上面的代码中“做”了所有标签的显示内容? (可能使用for循环每个元素循环,我也尝试过,没有结果。) 到目前为止,我用我的一些知识尝试了所有可能的事情(我还在研究javascript)。我真的很想知道我是否正在尝试做一些非常先进的事情,或者我只是不知道如何做到这一点。
谢谢,我希望没有像这样的另一个问题,我已经阅读了所有建议的内容,没有一个(除了一个它说使用类)就是这样。
他们都建议添加课程,所以我觉得我想尝试做一些真的不可能的事情。我还没有进入jQuery,所以请不要谈论它,谢谢。 (首先我必须学习好的JavaScript)
答案 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)
您可以仅向BODY
或HTML
元素添加一个类,并通过以下方式将所需的样式附加到此类上下文选择器。例如:
HTML.hide-code CODE {display: none; }