首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何“美化”/“简化”处理箭头键和tabIndex的代码?

如何“美化”/“简化”处理箭头键和tabIndex的代码?
EN

Stack Overflow用户
提问于 2020-06-09 09:35:03
回答 3查看 75关注 0票数 0

我想知道如何“美化”/“简化”以下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function handleKeyDown (e) {
  if (e.key === 'Enter') {
    e.preventDefault()
    myCustomEvent(e)
    return
  }
  if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {
    e.preventDefault()
    e.key === 'ArrowDown'
      ? document &&
        document.activeElement &&
        document.activeElement.nextElementSibling &&
        document.activeElement.nextElementSibling.focus()
      : document &&
        document.activeElement &&
        document.activeElement.previousElementSibling &&
        document.activeElement.previousElementSibling.focus()
  }
}

对我来说似乎太冗长了。

,我做错什么了吗?

我怎么写得更好?

EN

回答 3

Stack Overflow用户

发布于 2020-06-09 09:39:02

您可以使用可选的链接document?.activeElement?.nextElementSibling?.focus?.()

票数 3
EN

Stack Overflow用户

发布于 2020-06-09 09:43:57

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   function isActive(){
      return document && document.activeElement
    }
   if ( isActive()) {
    e.preventDefault()
    e.key === 'ArrowDown' ? 
        document.activeElement.nextElementSibling &&
        document.activeElement.nextElementSibling.focus()
    : e.key === 'ArrowUp' ?
        document.activeElement.previousElementSibling &&
        document.activeElement.previousElementSibling.focus()
    :null
  }
票数 2
EN

Stack Overflow用户

发布于 2020-06-09 09:48:02

正如@Alesky所建议的,我的代码重点是使用可选的链式操作符来获取需要获取焦点的元素,或者将e.key === 'ArrowDown'的比较结果赋给变量,并将focus()方法调用到它。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...
  if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {
    e.preventDefault()
    var baseEl = document && document.activeElement ; 
    var focusEl = e.key === 'ArrowDown'
      ? baseEl && document.activeElement.nextElementSibling 
      : baseEl && document.activeElement.previousElementSibling;
    el.focus();
  }
...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62288590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文