打字稿:如何检查eventTarget中的tagName?

时间:2015-11-21 18:07:04

标签: javascript typescript

为什么在这种情况下:

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

Visual Studio向我显示此错误?

  

构建:运营商&#39; ===&#39;不能应用于类型&#39; HTMLElement&#39;和   &#39;串&#39;

     

Property&#39; tagName&#39;类型&#39; EventTarget&#39;。

上不存在

当我运行脚本时工作正常。

如何正确编写?

谢谢。

4 个答案:

答案 0 :(得分:20)

我会像这样调整代码片段:

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

事件属性target投射到HTMLElement将为我们提供基础元素的所有适当属性

the playground

中查看

答案 1 :(得分:2)

我发现此语法也可以正常工作

if ((ev.target as HTMLElement).tagName === "SPAN") { 

答案 2 :(得分:1)

两个等号将(int =='string')类型(即19 =='19')之间的值比较为真。

3个等号是比较价值和类型。所以你要将字符串类型与HTML类型进行比较。因此等于虚假。如果要将tagname元素与字符串进行比较,请使用两个等号

答案 3 :(得分:1)

在Angular中,如果tagName属性在目标上给出错误,请尝试使用下面的代码

event.target['tagName']
相关问题