视觉上从一个html元素移动到另一个html元素 - Javascript。

问题描述 投票:0回答:1

为方便起见,这是一个学校的工作,我在输入栏中输入文字,然后从数据库中得到与用户所写字母相同的选项。它有简单的名称数据库附加。

我收到AJAX响应,并将其转化为名称数组.我在搜索字段下面有ul元素,来自响应的名称被我填充为这个ul列表中的li项。这一切工作,我需要的是功能,当按上下方向键从输入字段移动到这些列表项目。

在我的第一次尝试中,我选择了datalist,而不是ul,我用选项元素填充datalist,这工作很好,因为我可以从输入移动到datalist选项。然而,再往后我需要将事件监听器附加到选项上,这是不可能的。因此,我就去了ul li版本.我似乎无法解决如何能从输入元素切换到li项目。

我已经尝试过了。

我在输入栏上安装了事件监听器keydown来检查是否按下了DownArrow。这个方法有效。然后我尝试了以下方法(names是ul的id)。

let list = document.getElementById('names');
list.firstChild.focus();
list.firstChild.select();

在这里,我得到了 "list.firstChild.select is not a function "的错误信息,我被卡住了。

链接到当前版本

javascript html-lists
1个回答
0
投票

判断你的代码,你得到的错误的原因 list.firstChild.select is not a function 是因为你试图使用 focus() 方法的元素上。基本上,你可以在一个 <input /> 元素,但它无法在 <li> 项。

根据 DOM第2级只有以下元素有 focus 方法。

  • HTMLInputElement
  • HTMLSelectElement
  • HTMLTextAreaElement
  • HTMLAnchorElement
  • HTMLAreaElement

0
投票

为了让元素.focus()在列表项上工作(默认情况下不工作),你必须给列表项添加tabindex属性。

例如

listitem.setAttribute('tabindex',1)。

© www.soinside.com 2019 - 2024. All rights reserved.