国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

JavaScriptDOM學(xué)習(xí)第一章W3CDOM簡(jiǎn)介_基礎(chǔ)知識(shí)

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 20:47:19
文檔

JavaScriptDOM學(xué)習(xí)第一章W3CDOM簡(jiǎn)介_基礎(chǔ)知識(shí)

JavaScriptDOM學(xué)習(xí)第一章W3CDOM簡(jiǎn)介_基礎(chǔ)知識(shí):在這一章我主要介紹已經(jīng)被新一代的瀏覽器所支持的W3C 第一級(jí)的DOM。對(duì)他的運(yùn)作做一個(gè)大概的了解并且讓你知道你可以對(duì)他們做什么。 首先是對(duì)于DOM的一些建議和DOM設(shè)計(jì)的目的,然后我會(huì)告訴你什么是節(jié)點(diǎn)(nodes)并且怎樣通過DOM樹來遍歷節(jié)點(diǎn)。接著是如何得到一
推薦度:
導(dǎo)讀JavaScriptDOM學(xué)習(xí)第一章W3CDOM簡(jiǎn)介_基礎(chǔ)知識(shí):在這一章我主要介紹已經(jīng)被新一代的瀏覽器所支持的W3C 第一級(jí)的DOM。對(duì)他的運(yùn)作做一個(gè)大概的了解并且讓你知道你可以對(duì)他們做什么。 首先是對(duì)于DOM的一些建議和DOM設(shè)計(jì)的目的,然后我會(huì)告訴你什么是節(jié)點(diǎn)(nodes)并且怎樣通過DOM樹來遍歷節(jié)點(diǎn)。接著是如何得到一

在這一章我主要介紹已經(jīng)被新一代的瀏覽器所支持的W3C 第一級(jí)的DOM。對(duì)他的運(yùn)作做一個(gè)大概的了解并且讓你知道你可以對(duì)他們做什么。
首先是對(duì)于DOM的一些建議和DOM設(shè)計(jì)的目的,然后我會(huì)告訴你什么是節(jié)點(diǎn)(nodes)并且怎樣通過DOM樹來遍歷節(jié)點(diǎn)。接著是如何得到一個(gè)特定的節(jié)點(diǎn),以及怎樣改變他的值和屬性。最后就是DOM的終極目標(biāo):怎么創(chuàng)建一個(gè)自己的新節(jié)點(diǎn)。
建議
Level 1DOM是W3C制定的用來提供給任何程序語言來訪問XML文檔的。不管你用什么語言程序來處理XML文檔,只要是Level 1DOM里面的方法和屬性就可以。不管是Perl、VBScript還是JavaScript你都可以讀取任何你想讀取的值并且修改他們。
你們可能會(huì)猜到,這段描述的是一種理想情況,差異還是存在的(比如瀏覽器)。然后這部分內(nèi)容還是比較少,并且你在JavaScript里學(xué)習(xí)如何處理XML也對(duì)你在其它語言中的學(xué)習(xí)會(huì)有一定的幫助。
從某種程度上也可以講HTML看做是一種XML文檔。只要瀏覽器能夠處理相應(yīng)的腳本,那么Level 1 DOM也同樣在HTML里面可以運(yùn)行的很好。
你可以讀取每一個(gè)HTML的標(biāo)簽的文本和屬性,你可以刪除每一個(gè)標(biāo)簽和他們的內(nèi)容,你還可以實(shí)時(shí)的在現(xiàn)有的文檔里面插入一個(gè)新的標(biāo)簽而不用在服務(wù)器上修改。
因?yàn)樵O(shè)計(jì)之初要考慮到修改XML的方方面面,所以對(duì)于一般的網(wǎng)頁工程師來說有一些方法可能永遠(yuǎn)也用不上。比如,你可以用它來修改HTML的注釋,但是我沒有看出來問什么要這樣做。同樣的還有一些DOM處理DTD/Doctype的內(nèi)容,你在你的網(wǎng)頁設(shè)計(jì)中并不需要,所以忽略掉,集中注意力在你的日常所需上就好。
節(jié)點(diǎn)(Nodes)
文檔對(duì)象模型是一種文檔內(nèi)的多個(gè)元素之間怎樣相互聯(lián)系的一種模型。在Level 1 DOM中,每一個(gè)對(duì)象都是一個(gè)節(jié)點(diǎn)。所以如果你寫:
代碼如下:

This is a paragraph


那么你就創(chuàng)建了兩個(gè)節(jié)點(diǎn):元素P和內(nèi)容是"This is a paragraph”的文本節(jié)點(diǎn)。這個(gè)文本節(jié)點(diǎn)包含在P元素內(nèi),所以可以認(rèn)為是p節(jié)點(diǎn)的子節(jié)點(diǎn)。反過來說,p元素就是文本節(jié)點(diǎn)的父節(jié)點(diǎn)。
如果你寫成:
代碼如下:

This is a Paragraph


那么元素節(jié)點(diǎn)p就有兩個(gè)子節(jié)點(diǎn),其中一個(gè)還有他自己的子節(jié)點(diǎn)。
最后就是參數(shù)節(jié)點(diǎn)。(令人困惑的是,他們不算做元素節(jié)點(diǎn)的子節(jié)點(diǎn)。事實(shí)上,在我寫這一章的過程中我做過一些測(cè)試,IE5根本就不把參數(shù)節(jié)點(diǎn)當(dāng)做元素的子節(jié)點(diǎn)。)所以:
代碼如下:

This is a paragraph



的結(jié)構(gòu)可能是這樣的:

 

----------------

-------------- ALIGN

This is a |
| right

paragraph

這就是元素節(jié)點(diǎn),文本節(jié)點(diǎn)和參數(shù)節(jié)點(diǎn)。99%的HTML頁面都是由他們組成,你的主要任務(wù)也就是如何放置他們。當(dāng)然還有很多的其他節(jié)點(diǎn),暫且略過。

就像你所了解的,p元素也有他自己的父節(jié)點(diǎn),通常就是document,有時(shí)候也可能是一個(gè)DIV。所以整個(gè)文檔都可以看做是一顆由很多的節(jié)點(diǎn)組成的樹,而且這些節(jié)點(diǎn)大多都有自己的子節(jié)點(diǎn)。

 

|-------------------------------------

---------------- lots more nodes

-------------- ALIGN

This is a |
| right

paragraph


遍歷DOM樹
知道了DOM樹的結(jié)構(gòu),你就可以遍歷他來找到你想要的元素。舉個(gè)例子,假設(shè)元素節(jié)點(diǎn)p已經(jīng)存儲(chǔ)在變量x中(等一會(huì)介紹這是怎么做到的)。這時(shí)候如果我們想訪問BODY那么:
代碼如下: x.parentNode
我們就得到了x的父元素,然后就可以修改它了。這樣可以到達(dá)B節(jié)點(diǎn):
代碼如下: x.childNode[1]
childNode是一個(gè)包含所有x的子節(jié)點(diǎn)的數(shù)組。當(dāng)然,數(shù)組是從0開始編號(hào)的,所以childNode[0]就是文本節(jié)點(diǎn)"This is a " childNode[1]就是B節(jié)點(diǎn)。
兩個(gè)特別的:x.firstChild就表示x的第一個(gè)子節(jié)點(diǎn);x.lastChild就表示x的最后一個(gè)子節(jié)點(diǎn)。
假設(shè)p是BODY的第一個(gè)子節(jié)點(diǎn),BODY又是document的第一個(gè)子節(jié)點(diǎn),所以為了到達(dá)B節(jié)點(diǎn),你可以用下面的任意方法:
代碼如下:
document.firstChild.firstChild.lastChild;
document.firstChild.childNodes[0].lastChild;
document.firstChild.childNodes[0].childNodes[1];

甚至是下面這個(gè)比較笨的:
代碼如下: document.firstChild.childNodes[0].parentNode.firstChild.childNodes[1];
得到一個(gè)元素
然而,這樣遍歷文檔實(shí)在是太麻煩了。因?yàn)長(zhǎng)evel 1 DOM設(shè)計(jì)的目標(biāo)就是允許你修改整個(gè)DOM樹,所以你必須準(zhǔn)確的知道DOM樹的結(jié)構(gòu),這會(huì)很快導(dǎo)致一些問題。
所以還有一些方法能夠很快的到達(dá)你想要的元素。只要你到達(dá)了這里,就可以遍歷整個(gè)DOM樹的每一個(gè)節(jié)點(diǎn)。
讓我們繼續(xù)前面的例子。你想要到達(dá)元素B。最簡(jiǎn)單的辦法就是直接跳過去。通過document.getElementByTagName你就能很快的創(chuàng)建一個(gè)包含文檔內(nèi)的所有B標(biāo)簽的數(shù)組。假設(shè)我們的B是第一個(gè),那么你就可以簡(jiǎn)單的寫:
代碼如下: var x = document.getElementsByTagName('B')[0]
x就包含了元素節(jié)點(diǎn)B。首先你命令瀏覽器得到整個(gè)文檔的所有元素B(document.getElementByTagName(‘B')) ,然后你選擇了第一個(gè)文檔的第一個(gè)元素B([0]),就得到了你想要的。
你也可以寫:
代碼如下: var x = document.getElementsByTagName('P')[0].lastChild;
現(xiàn)在你先到了文檔的第一個(gè)段落P(假設(shè)我們的P是第一個(gè)元素),然后到達(dá)p的最后一個(gè)子元素。
最好的能準(zhǔn)確到達(dá)元素并且不需要DOM結(jié)構(gòu)的辦法就是給B一個(gè)ID:

This is a paragraph

現(xiàn)在你就可以簡(jiǎn)單的寫:
代碼如下: var x = document.getElementById('hereweare');
元素B就存儲(chǔ)在了x里。
修改一個(gè)節(jié)點(diǎn)
現(xiàn)在我們已經(jīng)到達(dá)了節(jié)點(diǎn),就可以做一些修改了。假設(shè)我們想把加粗的文字部分修改為'bold bit of text'。我們需要訪問正確的元素然后修改它的nodeValue。現(xiàn)在正確的元素不是元素B而是他的子元素text node:我們想改變的是文字,不是元素。所以可以寫:
代碼如下: document.getElementById('hereweare').firstChild.nodeValue='bold bit of text';
元素就改變了。
你可以通過nodeValue來修改任何文本節(jié)點(diǎn)或者參數(shù)。比如你可以修改段落的ALIGN參數(shù)。這也是非常的簡(jiǎn)單,先找到需要的元素(在這個(gè)例子中是B元素的父元素),然后使用setAttribute()方法來設(shè)置你想要的值:
代碼如下: function test2(val) {
if (document.getElementById && document.createElement)
{
node = document.getElementById('hereweare').parentNode;
node.setAttribute('align',val);
}
else alert('Your browser doesn\'t support the Level 1 DOM');
}

創(chuàng)建和刪除元素
修改元素固然有用,但是還是不如創(chuàng)建你需要的元素然后插入到現(xiàn)有的文檔中。我可以很簡(jiǎn)單的在這個(gè)段落后面添加一個(gè)HR元素然后很簡(jiǎn)單的刪除它。
創(chuàng)建元素使用下面的方法:
var x=document.createElemnt(‘HR')
這樣HR就創(chuàng)建并且存儲(chǔ)在x中。第二步就是把x插入到文檔之中。我寫了一個(gè)ID是inserthere的SPAN,我們就把它插入到這。所以我們使用appendChild()方法:
代碼如下: document.getElementById('inserthrhere').appendChild(x);
刪除它稍稍有點(diǎn)麻煩。我先創(chuàng)建一個(gè)臨時(shí)變量node來存儲(chǔ)SPAN,然后我告訴他移除他的第一個(gè)子元素:
代碼如下:
var node=document.getElementById(‘inserthere');
node.removeChild(node.childNode[0]);

同樣的方法我們也可以創(chuàng)建一個(gè)新的元素然后添加在ID是hereweare的B元素上。
代碼如下:
var x = document.createTextNode(' A new text node has been appended!');
document.getElementById('hereweare').appendChild(x);

你可以試一試,你會(huì)注意到用老的辦法可能不會(huì)移除新加的文本,那是因?yàn)樗麄円呀?jīng)成為分離的兩部分了:

 

------------

paragraph A new text node
has been appended!


(可以通過normalize()來把他們合并,但是IE5不支持)

我不打算告訴你怎么移除它,自己練習(xí)會(huì)比較有收獲

翻譯地址:http://www.quirksmode.org/dom/intro.html

轉(zhuǎn)載請(qǐng)保留以下信息
作者:北玉(tw:@rehawk)

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

JavaScriptDOM學(xué)習(xí)第一章W3CDOM簡(jiǎn)介_基礎(chǔ)知識(shí)

JavaScriptDOM學(xué)習(xí)第一章W3CDOM簡(jiǎn)介_基礎(chǔ)知識(shí):在這一章我主要介紹已經(jīng)被新一代的瀏覽器所支持的W3C 第一級(jí)的DOM。對(duì)他的運(yùn)作做一個(gè)大概的了解并且讓你知道你可以對(duì)他們做什么。 首先是對(duì)于DOM的一些建議和DOM設(shè)計(jì)的目的,然后我會(huì)告訴你什么是節(jié)點(diǎn)(nodes)并且怎樣通過DOM樹來遍歷節(jié)點(diǎn)。接著是如何得到一
推薦度:
標(biāo)簽: 第一 java javascript
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 日韩欧美在线综合 | 国产欧美久久久精品影院 | 国产69精品久久 | 91麻豆精品国产91久久久久久 | 欧美色视频在线 | 久久精品亚洲一区二区 | 免费视频国产 | 国产精品久久久久久久牛牛 | 99久久免费国产精品特黄 | 国产成人精品一区二区三区… | 黄色在线视频网址 | 中文欧美日韩 | 一区二区三区观看 | 亚洲免费一区 | 中文国产成人精品久久96 | 国产精品视频专区 | 欧美 国产 日韩 第一页 | 国产欧美综合在线一区二区三区 | 国产八区| 国产高清不卡码一区二区三区 | 国产精品久久毛片蜜月 | 综合亚洲一区二区三区 | 欧美日韩1区 | 久久综合中文字幕一区二区 | 中文字幕美日韩在线高清 | 特黄日韩免费一区二区三区 | 91精品成人免费国产 | 一区二区网站 | 国产亚洲视频在线 | 亚洲欧美成人综合久久久 | 日韩经典第一页 | 久久国产一级毛片一区二区 | 国产国语一级毛片中文 | 伊人伊成久久人综合网777 | 九九久久99综合一区二区 | 亚洲一区二区影院 | 免费国产线观看免费观看 | 唯美清纯另类亚洲 | 亚洲国产激情 | 国产精品美女久久久久网站 | 国产欧美日韩视频在线观看 |