繁体   English   中英

JavaScript参考html5语义标记

[英]JavaScript reference html5 semantic tag

我是JavaScript和这个网站的新手。 我在尝试切换div的可见性时需要帮助,该div是html语义标记( nav ),但是我找不到引用它的方法。

我已经搜索了一个好时机并尝试了document.getElementById() ,但是除非将标记更改为<div id="nav">否则该方法将无法正常工作。

我的JavaScript代码如下:

function toggle_visibility(id) {
"use strict";

var e = document.getElementById(id);

if (e.style.display === 'block') {

    e.style.display = 'none';
} else {

    e.style.display = 'block';
}}

我从这样的html中的另一个div调用它

<a href="#" onclick="toggle_visibility('nav');"><div id="mNav"></div></a>

<nav>
    <ul>
        <a href=""><li>
            Link 1
        </li></a>
        <a href=""><li>
            Link 2
        </li></a>
        <a href=""><li>
            Link 3
        </li></a>
    </ul>
</nav>

在您的情况下,仅当元素具有ID时才使用document.getElementById 但是,如果要使用标签名获取元素的引用,则必须使用document.getElementsByTagName 但这又会使您的通用函数toggle_visibility限于标记名。

不要使用二者,而是使用document.querySelector 对于此功能,您可以传递css选择器,它也可以是id或标记名或类名。

 function toggle_visibility(selector) { "use strict"; var e = document.querySelector(selector); e.style.display = (e.style.display==="block") ? "none" : "block"; } 
 <a onclick="toggle_visibility('nav');">Toggle Menu<div id="mNav"></div></a> <nav> <ul> <a href=""><li> Link 1 </li></a> <a href=""><li> Link 2 </li></a> <a href=""><li> Link 3 </li></a> </ul> </nav> 

另外,不要将click事件绑定到HTML内的元素,而是使用addEventListener绑定事件。 您可以更轻松地进行管理。

现在,您甚至可以在HTML中进行引用,例如:

toggle_visibility("#myNav")
toggle_visibility(".className")

nav在您的情况下不是id,而是标签名。 在这种情况下,请使用:

var e = document.getElementsByTagName(id)[0];

或者,更灵活的解决方案:

var e = document.querySelector(id);

(此外,因为它不是id,所以您可能想用tag替换id参数,但这只是装饰性的:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM