【发布时间】:2012-02-08 20:54:32
【问题描述】:
有以下键盘监听器ArrowDown事件(它的关键代码是40):
window.onload = function() {
var itemsContainer = document.getElementById('cities-drop');
document.addEventListener('keyup',function(event){
if (event.keyCode == 40 && itemsContainer.style.display=='block') {
event.preventDefault();
for (var i=0;i<itemsContainer.children.length-1;i++){
if (itemsContainer.getAttribute('class').substr('hovered')!=-1){
itemsContainer.children[i].setAttribute('class','');
itemsContainer.children[i].nextSibling.setAttribute('class','hovered');
//break;
}
}
}
});
在这种情况下,hovering 在按下 ArrowDown 之后跳转到列表中的最后一个元素。
如果break 未注释,它会跳转到第二个元素并且不再跳转。
搞不懂原理,怎么办,那个听者一直在听……
编辑
live demo
也许,这是一个结束的问题,但我不确定
【问题讨论】:
-
你想达到什么目的?自定义下拉菜单?
-
@Šime Vidas 你是绝对正确的
-
你为什么要自己写?有提供此功能的库和框架。
-
@Šime Vidas 我知道。这是我的 JS 学习计划中的任务。我再说一遍 - 我用纯 JS 编写它。
-
你想达到什么目的?是否要使用 ARROW_UP 和 ARROW_DOWN 键选择该列表中的项目?
标签: javascript events loops listener arrow-keys