2017-09-13 56 views
4

我想在Typescript/Reactjs中的HTML元素上觸發單擊事件。在Typescript中觸發點擊 - Property'click'在類型'Element'上不存在

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

使用類型HTMLElement,而不是Element。 HTMLElement從Element繼承。在文檔中你可以發現HTMLElement中定義了click函數。

你要把你的元素插入HTML元素通過

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

甚至'HTMLButtonElement'如果你知道這是一個''

+0

都能跟得上:錯誤[在裝載機] ./src/Game.tsx:123:13 TS2322:類型「元素」是不可轉讓鍵入'HTMLElement'。 '元素'類型中缺少屬性'accessKey'。 – Floris

+1

使用轉換運算符'document.getElementsByClassName('btn')[0]作爲HTMLElement' –

1

您應該使用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); 
+0

initEvent不再是標準。 –

相關問題