【发布时间】:2019-06-12 20:26:16
【问题描述】:
我有一个带有列表的面板,单击按钮即可打开:
<button id="menuButton">Menu</button>
<div id="menuPanel">
<ul>
<li>Name</li>
<li>Role</li>
<li>Profile</li>
<li>Management</li>
</ul>
</div>
按钮点击使用 JavaScript 添加一个 CSS 类来显示它。对于键盘用户,我希望能够在他们通过 .
JavaScript:
(function ready(fn) {
if (document.attachEvent ? document.readyState === 'complete' : document.readyState !== 'loading') {
fn();
} else {
document.addEventListener('DOMContentLoaded', fn);
let panel = document.getElementById('menuPanel'),
button = document.getElementById('menuButton');
button.onclick = checkPanelOn;
function checkPanelOn(e) {
e.preventDefault();
if (panel.classList.contains('on')) {
panel.classList.remove('on');
} else {
panel.classList.add('on');
}
}
}
}());
我正在寻找一个纯 JavaScript 解决方案(抱歉,不能在这个项目上使用 jQuery),但我正在努力寻找答案。你有什么建议吗?
【问题讨论】:
-
请发布完整代码 :-) 你会使用焦点效果,但我需要完整代码才能真正提供帮助
-
@IslamElshobokshy 完成了,谢谢。
-
所以如果我理解正确,当用户点击
TAB他们将能够通过列表,对吗?一旦它们在列表的最后一个元素中,下拉列表将删除class=on? -
@JoseCC 正确。他们浏览列表,如果他们跳过最后一项,我想删除该课程。
-
在您关闭最后一个元素时隐藏菜单是一项很棒的功能。您应该可以使用
onblur()事件处理程序来做到这一点。如果按下 ESC,您还应该隐藏菜单
标签: javascript keyboard accessibility keyboard-events