尝试在输入类型为https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/number的输入类型上使用方法stepUp
时遇到问题
这是我要运行的代码:
var box = document.getElementById("box");
var inputNode = box.querySelectorAll(".increment-input");
inputNode[0].stepUp(6);
<div id="box">
<input type="number" step="1" value="1" class="increment-input">
</div>
打字稿抛出:
类型“元素”上不存在属性“ stepUp”。
谢谢
答案 0 :(得分:2)
问题是TypeScript为了提供类型安全性,说您的列表inputNode
是NodeListOf<Element>
,因为querySelectorAll()
可以返回可能出现的任何HTML元素的列表。因此,如果您非常确定当前Element
的实际类型,则必须将其强制转换为该类型。然后,您将可以使用其特定功能。
public collectAndStepUp(): void {
const box = document.getElementById("box");
const inputNode = box.querySelectorAll(".increment-input");
// type cast from Element to HTMLInputElement
const htmlInputElement = inputNode[0] as HTMLInputElement;
htmlInputElement.stepUp(5);
}
应该可以解决问题。