javascript - 视觉上从一个 html 元素移动到另一个 - Javascript
问题描述
出于上下文考虑,这是一项学校工作,我在输入字段中输入文本,并从数据库中获取选项,这些选项建议与用户编写的字母相同的项目。它附有简单的名称数据库。
我收到 AJAX 响应并将其转换为名称数组。我在搜索字段下方有 ul 元素,并且名称来自我在此 ul 列表中填充为 li 项的响应。这一切都有效。我需要的是按向上/向下箭头键从输入字段移动到这些列表项时的功能。
在我第一次尝试时,我选择制作 datalist 而不是 ul 并用选项元素填充 datalist,这很好,因为我可以从输入转移到 datalist 选项。然而,再往前走,我需要将事件侦听器附加到不可能的选项。因此,我然后去了 ul / li 版本。我似乎无法弄清楚如何从输入元素切换到 li 项目。
我尝试过的:
我在输入字段上有 eventlistener keydown 来检查是否按下了 DownArrow。这行得通。然后我尝试了以下(名称是ul的id)。
let list = document.getElementById('names');
list.firstChild.focus();
list.firstChild.select();
在这里,我收到“list.firstChild.select 不是函数”的错误并且我卡住了。
解决方案
判断您的代码,您收到错误的原因list.firstChild.select is not a function
是因为您尝试在focus()
没有它的元素上使用该方法。基本上,您可以在元素上使用它<input />
,但它不适用于<li>
项目。
根据DOM level 2,只有以下 Elements 有focus
方法:
- HTML输入元素
- HTML选择元素
- HTMLTextAreaElement
- HTMLAnchorElement
- HTML区域元素
推荐阅读
- javascript - 如何使用省略号在 JSX 中显示最后 6 个字符?
- html - 如何增加一个人的高度与行中的其他人对齐?
- asp.net - 使用会话变量查询 SQL Server
- node.js - Nodemailer错误:连接ECONNREFUSED 127.0.0.1:587(errno:-61),但我指定端口:465,安全:true
- visual-studio-2017 - VSIX 项目 - 属性工具窗口扩展
- sql - 为什么我的 BigQuery 保留与 Firebase 不一致?
- sql - 在 SQL 中从 Count() 中选择 MAX 值时出错
- python - 将文本文件与输入进行比较
- html - 带有滚动溢出的弹性框内的弹性框?
- python - jupyter nbconvert to PDF 引发 PermissionError: [WinError 5]