Je voudrais déclencher un événement click sur un élément HTML dans TypeScript/Reactjs.
let element: Element = document.getElementsByClassName('btn')[0];
element.click();
Le code ci-dessus fonctionne. Mais je reçois une erreur TypeScript:
ERROR in [at-loader] ./src/App.tsx:124:17
TS2339: Property 'click' does not exist on type 'Element'.
Alors, quelle serait la bonne façon de faire cela?
Utilisez le type HTMLElement au lieu de Element. HTMLElement hérite de Element. Et dans la documentation, vous pouvez trouver que la fonction click
est définie dans HTMLElement.
Jeter votre élément dans le HTMLElement via
let element: HTMLElement = document.getElementsByClassName('btn')[0] as HTMLElement;
element.click();
Vous devriez utiliser ref
pour accéder à DOM.
<button ref={button => this.buttonElement = button} />
In your event handler:
this.buttonElement.click();// trigger click event
Ou bien, créez HtmlEvents et attachez-le à l'élément dom.
var event = document.createEvent("HTMLEvents");
event.initEvent("click", true, true);
var button = document.getElementsByClassName('btn')[0];
button.dispatchEvent(event);
Utilisez comme ceci
(<HTMLElement>document.getElementsByClassName('btn')[0]).click()
document
.querySelectorAll<HTMLElement>('.ant-table-row-expand-icon')
.forEach(node => node.click())