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>
nav
在您的情况下不是 id ,而是标签名称。在这种情况下,使用:
var e = document.getElementsByTagName(id)[0];
或者,更灵活的解决方案:
var e = document.querySelector(id);
(另外,因为它不是 id,您可能想用 tag
替换 id
参数,但这只是装饰性的 :))
在您的情况下,仅当元素具有 ID 时才使用 document.getElementById
。但是如果你想使用标签名获取元素的引用,那么你必须使用document.getElementsByTagName
。但这同样会使您的通用函数 toggle_visibility
仅限于标记名。
而不是两者,使用 document.querySelector
。对于此函数,您可以传递 css 选择器,它可以是 id 或标签名称,也可以是 class 名称。
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>
另外,不要将点击事件绑定到 HTML 内的元素,而是使用 addEventListener
来绑定事件。这样你会更容易管理。
现在在您的 HTML 中您甚至可以参考:
toggle_visibility("#myNav")
toggle_visibility(".className")
我是 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>
nav
在您的情况下不是 id ,而是标签名称。在这种情况下,使用:
var e = document.getElementsByTagName(id)[0];
或者,更灵活的解决方案:
var e = document.querySelector(id);
(另外,因为它不是 id,您可能想用 tag
替换 id
参数,但这只是装饰性的 :))
在您的情况下,仅当元素具有 ID 时才使用 document.getElementById
。但是如果你想使用标签名获取元素的引用,那么你必须使用document.getElementsByTagName
。但这同样会使您的通用函数 toggle_visibility
仅限于标记名。
而不是两者,使用 document.querySelector
。对于此函数,您可以传递 css 选择器,它可以是 id 或标签名称,也可以是 class 名称。
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>
另外,不要将点击事件绑定到 HTML 内的元素,而是使用 addEventListener
来绑定事件。这样你会更容易管理。
现在在您的 HTML 中您甚至可以参考:
toggle_visibility("#myNav")
toggle_visibility(".className")