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

詳談javascript中DOM的基本屬性

 更新時(shí)間:2015年02月26日 09:45:44   投稿:hebedich  
DOM節(jié)點(diǎn)是一個(gè)對(duì)象,它有著一些屬性。其中有些是只讀的,有些可以直接進(jìn)行更改(updated on-the-fly)。今天我們就來具體探討下DOM的基本屬性,希望對(duì)大家能有所幫助

結(jié)構(gòu)和內(nèi)容屬性

nodeType

所有的節(jié)點(diǎn)都有類型,節(jié)點(diǎn)總共有以下的12種類型。

復(fù)制代碼 代碼如下:

interface Node {
// NodeType
const unsigned short      ELEMENT_NODE       = 1;
const unsigned short      ATTRIBUTE_NODE     = 2;
const unsigned short      TEXT_NODE          = 3;
const unsigned short      CDATA_SECTION_NODE = 4;
const unsigned short      ENTITY_REFERENCE_NODE = 5;
const unsigned short      ENTITY_NODE        = 6;
const unsigned short      PROCESSING_INSTRUCTION_NODE = 7;
const unsigned short      COMMENT_NODE       = 8;
const unsigned short      DOCUMENT_NODE      = 9;
const unsigned short      DOCUMENT_TYPE_NODE = 10;
const unsigned short      DOCUMENT_FRAGMENT_NODE = 11;
const unsigned short      NOTATION_NODE      = 12;
...
}

其中最重要的兩個(gè)節(jié)點(diǎn)為元素節(jié)點(diǎn)(1)和文本節(jié)點(diǎn)(3)。其余的很少會(huì)用到。
例如,列出所有的子元素節(jié)點(diǎn)時(shí),我們可以遍歷它,并使用childNodes[i].nodeType != 1來進(jìn)行檢測(cè)。
下面是實(shí)現(xiàn)代碼:

復(fù)制代碼 代碼如下:

<body>
<div>Allowed readers:</div>
<ul>
 <li>John</li>
 <li>Bob</li>
</ul>
<!-- a comment node -->
<script>  
  var childNodes = document.body.childNodes
  for(var i=0; i<childNodes.length; i++) {
if (childNodes[i].nodeType != 1) continue
    alert(childNodes[i])
  }
</script>
</body>

*思考
下面這段代碼將提示什么內(nèi)容:

復(fù)制代碼 代碼如下:

<!DOCTYPE HTML>
<html> 
<body> 
<script>
   alert(document.body.lastChild.nodeType)
</script>
</body> 
</html>

nodeName, tagName

nodeName 和 tagName 都包含節(jié)點(diǎn)的名稱。
對(duì)于document.body來說

alert( document.body.nodeName )   // BODY
在HTML中所有的nodeName會(huì)被大寫。

當(dāng)nodeName沒有被大寫時(shí)
這種情況比較稀有,你如果好奇的話可以閱讀以下。
你很可能已經(jīng)知道,瀏覽器有兩種方式進(jìn)行解析:HTML模式和__XML模式。通常使用的是HTML模式,但是當(dāng)使用XMLHttpRequest__技術(shù)獲取XML文檔時(shí),會(huì)使用XML模式。
在火狐瀏覽器中當(dāng)XHTML文檔的Content-Type設(shè)置為xmlish時(shí)也會(huì)使用XML模式。
在__XML模式中節(jié)點(diǎn)名將會(huì)保留,所以有可能出現(xiàn)body或bOdY。
因此,如果通過XMLHttpRequest__技術(shù)從服務(wù)器載入XML到HTML文檔時(shí),節(jié)點(diǎn)名稱將會(huì)保留。

對(duì)于元素來說nodeName和__tagName__是相同的。
但非元素節(jié)點(diǎn)也存在著nodeName屬性,在這些節(jié)點(diǎn)中它有特殊的值:

alert(document.nodeName) // #document
大多數(shù)節(jié)點(diǎn)類型都沒有tagName屬性,并且在IE中注釋節(jié)點(diǎn)的tagName為!。
因此,通常來講nodeName 跟 tagName 比起來更有意義一些。但tagName像是簡(jiǎn)化版本,因此,當(dāng)你只處理元素節(jié)點(diǎn)時(shí),你可以使用它。

innerHTML

innerHTML是HTML5標(biāo)準(zhǔn)的一部分,詳細(xì)請(qǐng)看鏈接
它允許以文本的方式訪問節(jié)點(diǎn)內(nèi)容。下例將會(huì)輸出document.body的所有的內(nèi)容并且用新的內(nèi)容進(jìn)行替換。

復(fù)制代碼 代碼如下:

<body>
  <p>The paragraph</p>
  <div>And a div</div>
  <script>
    alert( document.body.innerHTML ) // read current contents
    document.body.innerHTML = 'Yaaahooo!' // replace contents
  </script>
</body>

innerHTML會(huì)包含一個(gè)有效地HTML。但瀏覽器也可以解析畸形的HTML。
innerHTML可以在任意一個(gè)元素節(jié)點(diǎn)中進(jìn)行使用。它非常非常有用。

innerHTML pitFalls

innerHTML不像看起來那么簡(jiǎn)單。它有一些陷阱在正等待著菜鳥們,甚至有些時(shí)候經(jīng)驗(yàn)豐富的程序員也無法避免。

IE中__table__節(jié)點(diǎn)的innerHTML為只讀的
IE中COL, COLGROUP, FRAMESET, HEAD, HTML, STYLE, TABLE, TBODY, TFOOT, THEAD, TITLE, TR等元素里innerHTML為只讀的。
IE中的table標(biāo)簽中除了TD其余的標(biāo)簽innerHTML都是只讀的。

innerHTML不能追加
從語句的構(gòu)成上來看innerHTML可以進(jìn)行追加操作,比如:

chatDiv.innerHTML += "<div>Hi <img src='smile.gif'/> !</div>"
chatDiv.innerHTML += "How you doing?"
但是實(shí)際上都做了些什么:

1. 舊的內(nèi)容被清空

2. 新的內(nèi)容被解析,并插入了進(jìn)去。內(nèi)容沒有被追加,它重新生成了。

    因此,所有的圖片和其他的資源當(dāng)進(jìn)行+=操作后會(huì)重新載入,包括smile.gif。

    幸運(yùn)的是,有其他的方式來更新內(nèi)容,這種方式不使用innerHTML,因此沒有上面提到的問題。

nodeValue

innerHTML只對(duì)元素節(jié)點(diǎn)有效。
對(duì)于其他類型的節(jié)點(diǎn)來說,他們使用nodeValue屬性來獲取內(nèi)容。下例將說明它是如何在文本節(jié)點(diǎn)和注釋節(jié)點(diǎn)工作的。

復(fù)制代碼 代碼如下:

<body>
The text
<!-- A comment -->
<script>
 for(var i=0; i<document.body.childNodes.length; i++) {
   alert(document.body.childNodes[i].nodeValue)
 }
</script>
</body>

上面的例子中,有些警告為空的,那是因?yàn)榭瞻坠?jié)點(diǎn)的緣故。注意到對(duì)于SCRIPT節(jié)點(diǎn)中nodeValue === null。那是因?yàn)镾CRIPT為元素節(jié)點(diǎn)。元素節(jié)點(diǎn),要使用innerHTML。

總結(jié)

nodeType
  節(jié)點(diǎn)類型。最重要的是元素節(jié)點(diǎn)為1,文本節(jié)點(diǎn)為3,只讀。
nodeName/tagName
  大寫的標(biāo)簽名。非元素節(jié)點(diǎn)來說nodeName還會(huì)有特殊的值,只讀。
innerHTML
  元素節(jié)點(diǎn)的內(nèi)容,可寫。
nodeValue
  文本節(jié)點(diǎn)的內(nèi)容,可寫。
DOM節(jié)點(diǎn)根據(jù)類型,還有其他的一些屬性。例如,INPUT標(biāo)簽有value和__checked__屬性。A屬性有href等等。

以上就是本文的全部?jī)?nèi)容了,希望大家能夠喜歡。

相關(guān)文章

  • javascript css styleFloat和cssFloat

    javascript css styleFloat和cssFloat

    在寫js操作css的過程中發(fā)現(xiàn)float屬性在IE和firefox下對(duì)應(yīng)的js腳本是不一樣的,IE下對(duì)應(yīng)得是 styleFloat,firefox,chorme,safari下對(duì)應(yīng)的是cssFloat,可用in運(yùn)算符去檢測(cè)style是否包含此屬性。
    2010-03-03
  • js打造數(shù)組轉(zhuǎn)json函數(shù)

    js打造數(shù)組轉(zhuǎn)json函數(shù)

    這里給大家分享的是一段使用js實(shí)現(xiàn)數(shù)組轉(zhuǎn)換成json的函數(shù)代碼,代碼簡(jiǎn)潔易懂,并附上了使用方法,小伙伴們拿去試試。
    2015-01-01
  • webpack優(yōu)化之代碼分割與公共代碼提取詳解

    webpack優(yōu)化之代碼分割與公共代碼提取詳解

    這篇文章主要給大家介紹了關(guān)于webpack優(yōu)化之代碼分割與公共代碼提取的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用webpack具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • javascript實(shí)現(xiàn)鼠標(biāo)拖動(dòng)改變層大小的方法

    javascript實(shí)現(xiàn)鼠標(biāo)拖動(dòng)改變層大小的方法

    這篇文章主要介紹了javascript實(shí)現(xiàn)鼠標(biāo)拖動(dòng)改變層大小的方法,涉及javascript操作鼠標(biāo)事件及樣式的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • JavaScript變量提升和嚴(yán)格模式實(shí)例分析

    JavaScript變量提升和嚴(yán)格模式實(shí)例分析

    這篇文章主要介紹了JavaScript變量提升和嚴(yán)格模式,結(jié)合實(shí)例形式分析了javascript變量提升和嚴(yán)格模式的原理及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-01-01
  • IE下JS保存圖片的簡(jiǎn)單實(shí)例

    IE下JS保存圖片的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)硪黄狪E下JS保存圖片的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-07-07
  • javascript/jquery獲取地址欄url參數(shù)的方法

    javascript/jquery獲取地址欄url參數(shù)的方法

    本篇文章主要是對(duì)javascript/jquery獲取地址欄url參數(shù)的方法進(jìn)行了介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2014-03-03
  • 前端強(qiáng)制刷新、清空緩存各種方法總結(jié)

    前端強(qiáng)制刷新、清空緩存各種方法總結(jié)

    這篇文章主要介紹了在遇到數(shù)據(jù)或邏輯未成功更新問題時(shí),如何通過刷新頁面、設(shè)置、清除緩存等方法進(jìn)行解決,文中通過圖文將各種情況下清空緩存的方案介紹的非常詳細(xì),需要的朋友可以參考下
    2025-02-02
  • js+html5實(shí)現(xiàn)頁面可刷新的倒計(jì)時(shí)效果

    js+html5實(shí)現(xiàn)頁面可刷新的倒計(jì)時(shí)效果

    這篇文章主要為大家詳細(xì)介紹了js+html5實(shí)現(xiàn)頁面可刷新的倒計(jì)時(shí)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 淺談讓你的代碼更簡(jiǎn)短,更整潔,更易讀的ES6小技巧

    淺談讓你的代碼更簡(jiǎn)短,更整潔,更易讀的ES6小技巧

    這篇文章主要介紹了淺談讓你的代碼更簡(jiǎn)短,更整潔,更易讀的ES6小技巧,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-10-10

最新評(píng)論

会同县| 澎湖县| 炎陵县| 裕民县| 柞水县| 平阳县| 班戈县| 昌图县| 四子王旗| 建阳市| 上杭县| 朝阳县| 呼玛县| 石林| 介休市| 改则县| 文山县| 景德镇市| 达州市| 长泰县| 仪征市| 新晃| 延庆县| 贵阳市| 漠河县| 栾城县| 全州县| 宣化县| 黄冈市| 大埔区| 汶上县| 吉隆县| 襄汾县| 广饶县| 永胜县| 孝义市| 临朐县| 永福县| 竹北市| 泰顺县| 宿松县|