如何在列表中向下或向上键触发事件监听器中的某个项目?

时间:2019-05-26 02:49:09

标签: javascript html javascript-events event-handling addeventlistener

我正在尝试在特定元素节点上运行focus()方法,具体取决于是否按下向上箭头键或向下箭头键。我要关注的列表项是我正在侦听的同级节点的子级,因为我希望焦点从搜索框(输入标签)转到同级节点的子级节点。

当按下向下箭头键时,我将firstChild属性放在事件侦听器中的searchSuggest框上,但是,这将在每次按下第一个子项或列表项时运行focus()方法,而不是每次按下列表中的下一个兄弟姐妹。

  const d = document,     
    searchBox = d.getElementById("PFsearchBox"),
    searchSuggest = d.getElementById("PFsearchSuggest")


  searchBox.addEventListener("keydown", e => {
    // up arrow
    if (e.which === 38) {
        e.preventDefault();
        // select the last item in the suggestion list
        searchSuggest.children[searchSuggest.children.length - 1].focus()
    }

    // down arrow
    if (e.which === 40) {
    e.preventDefault();
    searchSuggest.firstChild.focus()
    }
  });

我希望当按下向下箭头键时,焦点将从输入框移到searchSuggest节点中的第一个子列表项,然后每次按下向下箭头键都按顺序向下列表,反之亦然当按下向上箭头键时。Image of the HTML Markup of the DOM nodes

0 个答案:

没有答案