getElementXXX()函数怎么在TypeScript中使用

getElementXXX()函数怎么在TypeScript中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

html文件:

<!--这俩随便挑一个用就行-->
<inputtype="text"id="infoInput"name="infoInput">
<textareaid="infoArea"name="infoArea"rows="8"cols="80"></textarea>

<!--这俩也随便挑一个用就行-->
<spanid="some">somethinghappen!</span>
<pid="any">anythingok!</p>

我现在要通过TypeScript获取上面任意一个DOM元素,怎么做?有JS基础都知道,操作DOM可以通过 document 完成:

//由于DOM元素的ID是惟一的,所以这种方式获取的是唯一的DOM元素
dom=document.getElementById('infoInput');

//name属性是不唯一的,所以这种方式获取的是所有name=infoInput的DOM元素,即一个数组
dom1=document.getElementsByName('infoInput');

而在TypeScript中当然也可以这么做,但是在具体使用的时候除了需要声明变量保存获取到的DOM元素之外,还有一点小小的问题。

//Angular框架中
exportclassSomeimplementsOnInit{
ngOnInit(){
letdom=document.getElementById('infoArea');
//1.获取输入框中的内容
lethtml=dom.innerHTML;
letval=dom.value;

//2.打印输出
console.log(html);
console.log(val);
}
}

这段代码写完会报一个错:

Property 'value' does not exist on type 'HTMLElement' 不要紧,即使有错误提示,我们依旧可以运行并得到正确的结果。如果想在ts文件编译失败时不生成js文件,可以通过配置实现。

HTMLElement是什么?这是一个对象,它包含了所有HTML元素公有的属性。

关于HTMLElement的详细内容以及浏览器的兼容,可以查看MDN的这篇文章

来看一张图:

getElementXXX()函数怎么在TypeScript中使用

图源自nanaistaken的博客。

如果你恰好有一点面向对象编程的知识,那么这张图就很容易理解,没有也没关系,毕竟无论是js还是ts,现在都增加了class关键字,引入了类的思想。

经过上面的分析,我们能够知道: getElementXXX() 返回的是一个HTMLElement对象,而这个对象包含了所有DOM元素的公有属性。而每种不同类别的DOM元素,又有自己的特性,也就是图中的子类。

ts会做编译检查,所以会有错误提示,而js则不检查,所以这也会留下安全隐患。

到这里,其实应该已经明白了现在这种情况该怎么解决以及以后该怎么使用getElementXXX函数了。

修改后的代码:

exportclassSomeimplementsOnInit{
ngOnInit(){
//*.做一次类型转换,或者做类型断言
letdom=<HTMLInputElement>document.getElementById('infoArea');
letdom1=document.getElementById('infoArea')asHTMLElement;

//1.获取输入框中的内容
lethtml=dom.innerHTML;
letval=dom.value;

//2.打印输出
console.log(html);
console.log(val);
}
}

关于getElementXXX()函数怎么在TypeScript中使用问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注恰卡编程网行业资讯频道了解更多相关知识。

发布于 2021-03-24 01:23:01
收藏
分享
海报
0 条评论
168
上一篇:如何在Vue项目中使用v-text指令 下一篇:cross-env怎么在vue中使用
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码