TypeScript/ReactjsのHTML要素でクリックイベントをトリガーしたいと思います。
let element: Element = document.getElementsByClassName('btn')[0];
element.click();
上記のコードは機能します。しかし、TypeScriptエラーが発生しています:
ERROR in [at-loader] ./src/App.tsx:124:17
TS2339: Property 'click' does not exist on type 'Element'.
それで、これを行う正しい方法は何でしょうか?
タイプHTMLElementの代わりにElement。 HTMLElementはElementを継承します。また、ドキュメントでは、click
関数がHTMLElementで定義されていることがわかります。
経由で要素をHTMLElementにキャストします
let element: HTMLElement = document.getElementsByClassName('btn')[0] as HTMLElement;
element.click();
ref
を使用してDOMにアクセスする必要があります。
<button ref={button => this.buttonElement = button} />
In your event handler:
this.buttonElement.click();// trigger click event
または、HtmlEventsを作成し、dom要素にアタッチします。
var event = document.createEvent("HTMLEvents");
event.initEvent("click", true, true);
var button = document.getElementsByClassName('btn')[0];
button.dispatchEvent(event);
このように使用する
(<HTMLElement>document.getElementsByClassName('btn')[0]).click()
document
.querySelectorAll<HTMLElement>('.ant-table-row-expand-icon')
.forEach(node => node.click())