[英]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.