正确键入nextElementSibling,以便可以使用.focus()?

时间:2019-01-29 15:12:17

标签: javascript html typescript types element

我正在尝试使用nextElementSibling以编程方式将焦点移到表单中,但是我也正在使用Typescript并想输入变量/常量...

没有输入并使用以下命令就成功了:

myFunct(event) {
  const myEl = event.srcElement;
  const nextElement = myEl.nextElementSibling;

  if (nextElement) {
    nextElement.focus();
  }
}

但是,在代码上使用类型时,出现不一致和以下IntelliJ警告:

  

类型“元素”上不存在属性“焦点”

myFunct(event: KeyboardEvent) {
  const myEl: Element = event.srcElement;
  const nextElement: Element = myEl.nextElementSibling;

  if (nextElement) {
    nextElement.focus();
  }
}

但是,根据 Mozilla

,我在谷歌搜索时发现nextElementSibling的类型实际上应该是Element

有人可以帮忙吗?

更新:

看来KeyboardEvent上的event实际上是造成此问题的原因。

1 个答案:

答案 0 :(得分:1)

  

MDN开始:Element从其父元素Element继承属性,并从GlobalEventHandlers和TouchEventHandlers实现这些属性。

因此,您可以将代码更改为(使用typescriptlang.org测试的代码):

function myFunct(event: KeyboardEvent) {
  const myEl = <HTMLElement>event.srcElement;
  const nextElement = <HTMLElement>myEl.nextElementSibling;

  if (nextElement) {
    nextElement.focus();
  }
}