getElementXXX()函數(shù)怎么在TypeScript中使用

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)看一張圖:

getElementXXX()函數(shù)怎么在TypeScript中使用

圖源自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)

外貿(mào)網(wǎng)站制作