2015-11-21 110 views
6

在這種情況下爲什麼:Typescript:如何檢查eventTarget中的tagName?

var ele = <HTMLDivElement>document.getElementById("toolbar"); 
    ele.addEventListener("click", function (e) { 
     if (e.target.tagName === "SPAN") { console.log(e.target.tagName) } }, false); 

Visual Studio中顯示我這個錯誤?

構建:運算符'==='不能應用於'HTMLElement'類型和 '字符串'。

屬性'tagName'在類型'EventTarget'上不存在。

當我運行腳本工作正常。

如何正確書寫?

謝謝。

回答

13

我會調整該代碼段是這樣的:

var ele = <HTMLDivElement>document.getElementById("toolbar"); 
    ele.addEventListener("click", (ev: MouseEvent) => { 
     var element = ev.target as HTMLElement;  
     if (element.tagName === "SPAN") { 
      console.log(element.tagName) 
     } 
    }, false); 

鑄造事件財產targetHTMLElement會給我們的基本元素的所有適當的屬性。

檢查它在the playground

+0

謝謝。順便說一句,你可以推薦我很好的打字稿教程嗎? – Klick

+0

我真的很高興看到這種幫助;)起點可能是basarat,他的書籍和視頻,例如這裏https://basarat.gitbooks.io/typescript/。如果這有所幫助,你可以接受答案;) –

1

兩個等號(INT == '字串')的類型(即19 == '19')evals爲true之間進行比較的值。

3等號是比較值和類型時。所以你將一個字符串類型與一個HTML類型進行比較。因此等於麻痹。如果要比較的標記名元素字符串中使用兩個等號

1

在角如果TagName屬性是給目標錯誤,請嘗試使用下面的代碼

event.target['tagName'] 
+0

這很好,因爲類型安全並不妨礙你的使用,而且你不僅可以在Angular中使用它。但是沒有類型安全性,所以@Radim答案更好。 – codeepic

相關問題