getElementXXX()函數(shù)怎么在TypeScript中使用?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
10年積累的網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先制作網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有桂東免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
html文件:
<!-- 這倆隨便挑一個(gè)用就行 --> <input type="text" id="infoInput" name="infoInput"> <textarea id="infoArea" name="infoArea" rows="8" cols="80"></textarea> <!-- 這倆也隨便挑一個(gè)用就行 --> <span id="some">something happen!</span> <p id="any">anything ok!</p>
我現(xiàn)在要通過(guò)TypeScript獲取上面任意一個(gè)DOM元素,怎么做?有JS基礎(chǔ)都知道,操作DOM可以通過(guò) document 完成:
// 由于DOM元素的ID是惟一的,所以這種方式獲取的是唯一的DOM元素 dom = document.getElementById('infoInput'); // name屬性是不唯一的,所以這種方式獲取的是所有 name=infoInput 的DOM元素,即一個(gè)數(shù)組 dom1 = document.getElementsByName('infoInput');
而在TypeScript中當(dāng)然也可以這么做,但是在具體使用的時(shí)候除了需要聲明變量保存獲取到的DOM元素之外,還有一點(diǎn)小小的問(wèn)題。
// Angular框架中 export class Some implements OnInit { ngOnInit() { let dom = document.getElementById('infoArea'); // 1. 獲取輸入框中的內(nèi)容 let html = dom.innerHTML; let val = dom.value; // 2. 打印輸出 console.log(html); console.log(val); } }
這段代碼寫完會(huì)報(bào)一個(gè)錯(cuò):
Property 'value' does not exist on type 'HTMLElement' 不要緊,即使有錯(cuò)誤提示,我們依舊可以運(yùn)行并得到正確的結(jié)果。如果想在ts文件編譯失敗時(shí)不生成js文件,可以通過(guò)配置實(shí)現(xiàn)。
HTMLElement是什么?這是一個(gè)對(duì)象,它包含了所有HTML元素公有的屬性。
關(guān)于HTMLElement的詳細(xì)內(nèi)容以及瀏覽器的兼容,可以查看MDN的這篇文章
來(lái)看一張圖:
圖源自nanaistaken的博客。
如果你恰好有一點(diǎn)面向?qū)ο缶幊痰闹R(shí),那么這張圖就很容易理解,沒(méi)有也沒(méi)關(guān)系,畢竟無(wú)論是js還是ts,現(xiàn)在都增加了class關(guān)鍵字,引入了類的思想。
經(jīng)過(guò)上面的分析,我們能夠知道: getElementXXX() 返回的是一個(gè)HTMLElement對(duì)象,而這個(gè)對(duì)象包含了所有DOM元素的公有屬性。而每種不同類別的DOM元素,又有自己的特性,也就是圖中的子類。
ts會(huì)做編譯檢查,所以會(huì)有錯(cuò)誤提示,而js則不檢查,所以這也會(huì)留下安全隱患。
到這里,其實(shí)應(yīng)該已經(jīng)明白了現(xiàn)在這種情況該怎么解決以及以后該怎么使用getElementXXX函數(shù)了。
修改后的代碼:
export class Some implements OnInit { ngOnInit() { // *. 做一次類型轉(zhuǎn)換,或者做類型斷言 let dom = <HTMLInputElement>document.getElementById('infoArea'); let dom1 = document.getElementById('infoArea') as HTMLElement; // 1. 獲取輸入框中的內(nèi)容 let html = dom.innerHTML; let val = dom.value; // 2. 打印輸出 console.log(html); console.log(val); } }
關(guān)于getElementXXX()函數(shù)怎么在TypeScript中使用問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
分享文章:getElementXXX()函數(shù)怎么在TypeScript中使用
文章轉(zhuǎn)載:http://bm7419.com/article46/psdshg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、App設(shè)計(jì)、網(wǎng)站收錄、網(wǎng)站排名、定制開發(fā)、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)