javascript - GetElementsByTagNames 和 block 显示

标签 javascript html css

我正在使用 HTML、CSS 和 JavaScript 写一篇“长读”文章,我想通过添加“目录”来改进整个文本的导航。这可能看起来很奇怪,但我希望我可以通过在单击标题(h1、h2、h3 ...)时隐藏包裹在 div 标签中的所有内容来做到这一点。因此,页面上只会显示标题,一个接一个,看起来就像一个花哨的目录。由于我是编程新手,所以我正在学习。目前,找到一个合适的方法对我来说并不明显。

这是我在 header 标记中使用的内容。

<h1 onclick="ff('hide');">

当然,这是一个非常简单的 JS“触发器”函数,仅适用于一个已识别的元素。

function ff(id)
{
    if(document.getElementById(id).style.display == "none")
        document.getElementById(id).style.display = "block";
    else    document.getElementById(id).style.display = "none";
}

我怎样才能使该函数适用于文档的每个 div 标签?我正在尝试使用 getElementsByClass 或 getElementsByTagName 方法,但我不知道如何使它们正常工作,因为它正在处理数组...

如有任何帮助,我们将不胜感激。这是我第一次使用这个网站,我希望我遵守相应的规则。由于我的英语不是很好,我也很感激任何指向可以向我展示相关方法的解决方案的链接。

非常感谢你!

最佳答案

试试这个,点击第一个元素(切换)

<h1 onclick="ff('toHide');">toggle</h1>

<h1 class="toHide">hide</h1>

<h1>not hide</h1>

<h1 class="toHide">hide</h1>

需要说明的是,我做了一个 fiddle ,但这段代码似乎只有在我的浏览器中测试后才能工作。不知道为什么

function ff(c) {
    //get array
    var arr = document.getElementsByClassName(c);
    //single element
    var el = "";

    //loop through your collection
    for (i = 0; i < arr.length; i++) {
        el = arr[i];
        //the function
        if (el.style.display == "none") {
            el.style.display = "block"; 
        }else {
            el.style.display = "none";
        }
    }
}

关于javascript - GetElementsByTagNames 和 block 显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27384422/

相关文章:

javascript - 何时加载我的 JavaScript?

javascript - React-Native 的 TextInput 组件中的 SetTimeout

javascript - Android上的HTML5音频自动播放-iframe技巧

javascript - Ajax 和动态更改 URL?

javascript - 重新打开页面时,Angular 脚本未运行

javascript/firebug 跳过代码行

javascript - Jquery从json中获取值到select中

javascript - 在 Javascript 字符串中插入 <br/>

html - 停止包含 div 的边框重叠的输入文本框

html - 使用 CSS 将 Div 垂直向下或向上定位