2017-09-13 10 views
4

Typescript/ReactjsのHTML要素でclickイベントをトリガーしたいと思います。Typescriptのトリガークリック - 'Element'タイプの 'click'プロパティが存在しません

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'. 

これを行う正しい方法は何でしょうか?

答えて

12

ではなくElementの種類HTMLElementを使用してください。 HTMLElementはElementから継承します。また、ドキュメントでは、click関数がHTMLElementで定義されていることがわかります。

はあなたがDOMにアクセスするためにrefを使用する必要があります

let element: HTMLElement = document.getElementsByClassName('btn')[0] as HTMLElement; 
element.click(); 
+1

あるいは 'HTMLButtonElement'あなたが知っていれば、それは' '

+0

いやです:ERROR ./src/Game.tsx:123:13 [AT-ローダー]で TS2322:タイプ '要素が' 割り当て可能ではありません「HTMLElement」と入力します。 プロパティ 'accesskey'がタイプ 'Element'にありません。 – Floris

+1

キャスト演算子 'document.getElementsByClassName( 'btn')[0]をHTMLElementとして使用する –

1

経由でのHTMLElementにあなたの要素をキャストします。

<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); 
+0

initEventはもはや標準ではありません。 –