最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

TypeScript中使用getElementXXX()的示例代碼

 更新時間:2019年09月12日 08:24:35   作者:大盜  
這篇文章主要介紹了TypeScript中使用getElementXXX()的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

簡述

Angular 1.x版本是用JavaScript編寫的,我們在百度Angular經(jīng)常會搜索到AngularJS,并不是JavaScript的什么衍生版本,就是Angular 1.x。在后續(xù)版本中,改用TypeScript來重寫了Angular框架。改動較大,所以做了個區(qū)分,Angular v1.x就叫AngularJS,v2及后續(xù)版本統(tǒng)稱為Angular。

查資料和解決方案的時候,經(jīng)常會搜索到大量的AngularJS內(nèi)容,注意區(qū)分。

在這里提一下Angular的歷史,是因為本文是在使用這個框架的時候遇到的,所以啰嗦兩句。

問題來了

現(xiàn)在有如下html文件:

<!-- 這倆隨便挑一個用就行 -->
<input type="text" id="infoInput" name="infoInput">
<textarea id="infoArea" name="infoArea" rows="8" cols="80"></textarea>

<!-- 這倆也隨便挑一個用就行 -->
<span id="some">something happen!</span>
<p id="any">anything ok!</p>

我現(xiàn)在要通過TypeScript獲取上面任意一個DOM元素,怎么做?有JS基礎(chǔ)都知道,操作DOM可以通過 document 完成:

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

// name屬性是不唯一的,所以這種方式獲取的是所有 name=infoInput 的DOM元素,即一個數(shù)組
dom1 = document.getElementsByName('infoInput');

而在TypeScript中當(dāng)然也可以這么做,但是在具體使用的時候除了需要聲明變量保存獲取到的DOM元素之外,還有一點小小的問題。

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

這段代碼寫完會報一個錯:

Property 'value' does not exist on type 'HTMLElement' 不要緊,即使有錯誤提示,我們依舊可以運行并得到正確的結(jié)果。如果想在ts文件編譯失敗時不生成js文件,可以通過配置實現(xiàn)。

HTMLElement是什么?這是一個對象,它包含了所有HTML元素公有的屬性。

關(guān)于HTMLElement的詳細內(nèi)容以及瀏覽器的兼容,可以查看MDN的這篇文章

來看一張圖:

圖源自nanaistaken的博客。

如果你恰好有一點面向?qū)ο缶幊痰闹R,那么這張圖就很容易理解,沒有也沒關(guān)系,畢竟無論是js還是ts,現(xiàn)在都增加了class關(guān)鍵字,引入了類的思想。

經(jīng)過上面的分析,我們能夠知道: getElementXXX() 返回的是一個HTMLElement對象,而這個對象包含了所有DOM元素的公有屬性。而每種不同類別的DOM元素,又有自己的特性,也就是圖中的子類。

ts會做編譯檢查,所以會有錯誤提示,而js則不檢查,所以這也會留下安全隱患。

到這里,其實應(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);
 }
}

總結(jié)

HTMLElement是DOM結(jié)點共有的屬性,TypeScript庫中抽取該屬性作為一個公共接口,類似于其他面向?qū)ο笳Z言如Java和c++中所說的基類。這樣做可以保證在操作DOM結(jié)點的時候不會出現(xiàn)訪問不存在屬性的問題。

HTMLInputElement是HTMLElement的一個子接口(或說子類,但TypeScript是支持class的,所以說接口更好一些),其內(nèi)部封裝了如input,textarea這類dom結(jié)點的屬性。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JavaScript基于inquirer封裝一個控制臺文件選擇器

    JavaScript基于inquirer封裝一個控制臺文件選擇器

    這篇文章主要介紹了JavaScript基于inquirer封裝一個控制臺文件選擇器,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-08-08
  • CSS中position屬性之fixed實現(xiàn)div居中

    CSS中position屬性之fixed實現(xiàn)div居中

    這篇文章主要介紹了CSS中position屬性之fixed實現(xiàn)div居中的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • js實現(xiàn)簡單鎖屏功能實例

    js實現(xiàn)簡單鎖屏功能實例

    這篇文章主要介紹了js實現(xiàn)簡單鎖屏功能的方法,實例分析了javascript操作頁面元素顯示與隱藏的相關(guān)技巧,涉及javascript操作元素屬性與鼠標(biāo)、鍵盤事件的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • 完美解決瀏覽器跨域的幾種方法(匯總)

    完美解決瀏覽器跨域的幾種方法(匯總)

    下面小編就為大家?guī)硪黄昝澜鉀Q瀏覽器跨域的幾種方法(匯總)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • js實現(xiàn)文字超出部分用省略號代替實例代碼

    js實現(xiàn)文字超出部分用省略號代替實例代碼

    關(guān)于超出一定字數(shù)用省略號顯示的問題,這種要求在我們?nèi)粘i_發(fā)的時候經(jīng)常見到,我們之前基本都是用CSS來完成的,今天給大家分享個Javascript實現(xiàn)這個功能的示例代碼,有需要的可以參考借鑒。
    2016-09-09
  • javascript 精確獲取頁面元素的位置

    javascript 精確獲取頁面元素的位置

    現(xiàn)在網(wǎng)上最流行方法是John Resig在《Pro JavaScript techniques》提出的offset大法,累加元素offsetParent的offsetLeft和offsetTop一直到DOM的頂層。
    2010-01-01
  • JavaScript如何獲取一個元素的樣式信息

    JavaScript如何獲取一個元素的樣式信息

    這篇文章主要介紹了JavaScript如何獲取一個元素的樣式信息,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • 一文總結(jié)JavaScript中常見的設(shè)計模式

    一文總結(jié)JavaScript中常見的設(shè)計模式

    在程序設(shè)計中有很多實用的設(shè)計模式,而其中大部分語言的實現(xiàn)都是基于“類”。在程序設(shè)計中有很多實用的設(shè)計模式,而其中大部分語言的實現(xiàn)都是基于“類”。,本文將總結(jié)了JavaScript中常見的十五種設(shè)計模式,感興趣的朋友可以參考下
    2023-05-05
  • js實現(xiàn)產(chǎn)品縮略圖效果

    js實現(xiàn)產(chǎn)品縮略圖效果

    本文主要介紹了js實現(xiàn)產(chǎn)品縮略圖效果的實例。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • javascript中直接寫php代碼的方法

    javascript中直接寫php代碼的方法

    這篇文章介紹了javascript中直接寫php代碼的方法,有需要的朋友可以參考一下
    2013-07-07

最新評論

开平市| 开封市| 甘洛县| 大名县| 阿城市| 富锦市| 思茅市| 江北区| 长岭县| 蕉岭县| 琼中| 灌阳县| 历史| 东台市| 定安县| 鲁甸县| 平安县| 达尔| 西贡区| 肇州县| 呼玛县| 土默特右旗| 上犹县| 姜堰市| 乌拉特后旗| 肇东市| 易门县| 望城县| 新泰市| 抚顺市| 阿拉善右旗| 涿州市| 道孚县| 上饶市| 大安市| 巨野县| 南京市| 甘泉县| 綦江县| 清流县| 鄂温|