天天看點

DOM程式設計

一、DOM簡介

        文檔對象模型(Document Object Model,簡稱DOM),是W3C組織推薦的處理可擴充标志語言的标準程式設計接口。

可以将每個HTML标簽都做為一個對象,JavaScript通過調用DOM中的屬性、方法就可以對網頁中的文本框、層等元素進行程式設計控制。

選擇器:

document.getElementById('id')

document.getElementsByName('name')

document.getElementsByTagName('tagname')

執行個體示範一、修改單個标簽中的文本内容。

1

2

3

4

5

6

7

8

9

10

<code>&lt;</code><code>div</code> <code>id</code><code>=</code><code>"n1"</code><code>&gt;</code>

<code>&lt;</code><code>p</code><code>&gt;hello aaaaaa&lt;/</code><code>p</code><code>&gt;</code>

<code>&lt;/</code><code>div</code><code>&gt;</code>

<code>&lt;</code><code>script</code> <code>type</code><code>=</code><code>"text/javascript"</code><code>&gt;</code>

<code>&lt;!-- 通過标簽ID擷取到标簽對象 --&gt;</code>

<code>var name1 = document.getElementById('n1');</code>

<code>&lt;!-- 修改标簽文本内容為'tuchao' --&gt;</code>

<code>name1.innerText = 'tuchao';</code>

<code>&lt;/</code><code>script</code><code>&gt;</code>

執行個體示範二、通過标簽name修改多個标簽的内容

11

12

13

14

15

<code>&lt;</code><code>hr</code><code>/&gt;</code>

<code>&lt;</code><code>div</code> <code>name</code><code>=</code><code>"n2"</code><code>&gt; &lt;</code><code>p</code><code>&gt;heheheheeeeeee&lt;/</code><code>p</code><code>&gt;&lt;/</code><code>div</code><code>&gt;</code>

<code>&lt;</code><code>div</code> <code>name</code><code>=</code><code>"n2"</code><code>&gt; &lt;</code><code>p</code><code>&gt;bbabababbabab&lt;/</code><code>p</code><code>&gt;&lt;/</code><code>div</code><code>&gt;</code>

<code>&lt;!-- 通過标簽name擷取到标簽對象 --&gt;</code>

<code>var name2 = document.getElementsByName('n2');</code>

<code>&lt;!-- 當擷取到多個同name标簽時,則通過序号來差別,name2[0]表示第一個,name2[1]則表示第二個 --&gt;</code>

<code>name2[0].innerText = 'tuchao';</code>

<code>name2[1].innerText = 'tuchao';</code>

頁面效果:

<a href="http://s5.51cto.com/wyfs02/M02/7A/FC/wKioL1bEMIDT76I9AAAG4wS6txc583.png" target="_blank"></a>

執行個體示範三、通過标簽tag修改多個标簽的内容

16

17

<code>&lt;!-- 通過标簽tag擷取到标簽對象 --&gt;</code>

<code>var name3 = document.getElementsByTagName('div');</code>

<code>&lt;!-- 對該對象進行循環,逐一取出每個對象進行修改 --&gt;</code>

<code>for (var item in name3){</code>

<code>    </code><code>name3[item].innerText = 'elephant'</code>

<code>    </code><code>}</code>

<a href="http://s5.51cto.com/wyfs02/M00/7A/FC/wKioL1bEMqyi1N_jAAAEH6wzSMg981.png" target="_blank"></a>

常用函數:

建立标簽

       document.createElement('a')

擷取或者修改樣式

        obj.className

擷取或設定屬性

        setattribute(key,val)    getattribute(key)

擷取或修改樣式中的屬性

        obj.style.屬性

送出表單

        document.geElementById('form_id').submit()

執行個體示範四、在标簽中加入内容

<code>&lt;!-- 建立一個a标簽 --&gt;</code>

<code>var tag = document.createElement("a");</code>

<code>&lt;!-- 給建立的标簽賦予連結 --&gt;</code>

<code>tag.href = '</code>

<code> </code><code>&lt;!-- 給标簽設定文本字元 --&gt;</code>

<code>tag.innerText = '點希望';</code>

<code>var id1 = document.getElementById('n1');</code>

<code>&lt;!-- 給id1對象添加标簽 --&gt;</code>

<code>id1.appendChild(tag);</code>

<a href="http://s2.51cto.com/wyfs02/M01/7A/FD/wKiom1bEOjWxVENhAAAC5BDH8aE193.png" target="_blank"></a>

執行個體示範五、标簽替換

<code>&lt;!-- 建立标簽對象 --&gt;</code>

<code>var tag = "&lt;</code><code>a</code> <code>href</code><code>=</code><code>'http://www.baidu.com'</code><code>&gt;百度一下&lt;/</code><code>a</code><code>&gt;"</code>

<code>&lt;!-- 替換标簽 --&gt;</code>

<code>id1.innerHTML = tag;</code>

頁面效果會顯示原id="n1"的div标簽消失了,替換成了自定義的超連結标簽。

執行個體示範六、修改标簽的Class

18

19

20

21

22

23

24

<code>&lt;!DOCTYPE html&gt;</code>

<code>&lt;</code><code>html</code> <code>lang</code><code>=</code><code>"en"</code><code>&gt;</code>

<code>&lt;</code><code>head</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>meta</code> <code>http-equiv</code><code>=</code><code>"Content-Type"</code> <code>charset</code><code>=</code><code>"UTF-8"</code> <code>content</code><code>=</code><code>"text/html"</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>title</code><code>&gt;js_st1&lt;/</code><code>title</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>style</code> <code>type</code><code>=</code><code>"text/css"</code><code>&gt;</code>

<code>        </code><code>.hide {display: none;}</code>

<code>        </code><code>.n22 {color:red;}</code>

<code>    </code><code>&lt;/</code><code>style</code><code>&gt;</code>

<code>&lt;/</code><code>head</code><code>&gt;</code>

<code>&lt;</code><code>body</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>div</code> <code>class</code><code>=</code><code>"n22"</code> <code>name</code><code>=</code><code>"n2"</code><code>&gt; &lt;</code><code>p</code><code>&gt;heheheheeeeeee&lt;/</code><code>p</code><code>&gt;&lt;/</code><code>div</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>hr</code><code>/&gt;</code>

<code>    </code><code>&lt;</code><code>div</code> <code>name</code><code>=</code><code>"n2"</code><code>&gt; &lt;</code><code>p</code><code>&gt;bbabababbabab&lt;/</code><code>p</code><code>&gt;&lt;/</code><code>div</code><code>&gt;</code>

<code>var id2 = document.getElementsByName('n2');</code>

<code>&lt;!-- 将原樣式n22替換為hide樣式 --&gt;</code>

<code>id2[0].className = 'hide'</code>

<code>&lt;/</code><code>script</code><code>&gt;      </code>

<code>&lt;/</code><code>body</code><code>&gt;</code>

<code>&lt;/</code><code>html</code><code>&gt;</code>

此時第一個div在頁面中将不會顯示了

執行個體示範七、修改标簽的name值

<code>&lt;</code><code>div</code> <code>id</code><code>=</code><code>"n3"</code> <code>name</code><code>=</code><code>"dog"</code><code>&gt; &lt;/</code><code>div</code><code>&gt;</code>

<code>&lt;!-- 通過id擷取到标簽對象 --&gt;</code>

<code>var id3 = document.getElementById('n3');</code>

<code>&lt;!-- 使用log列印原name值 --&gt;</code>

<code>console.log(id3.getAttribute('name'));</code>

<code>&lt;!-- 修改标簽的name值為'cow' --&gt;</code>

<code>id3.setAttribute('name','cow');</code>

<a href="http://s4.51cto.com/wyfs02/M01/7A/FD/wKioL1bERcHC_WC5AAAtAWRMTsw355.png" target="_blank"></a>

執行個體示範八、修改标簽樣式

<code>&lt;</code><code>div</code> <code>style</code><code>=</code><code>"width:500px; height:300px; border:solid black 1px"</code> <code>id</code><code>=</code><code>"n3"</code> <code>name</code><code>=</code><code>"dog"</code><code>&gt; &lt;/</code><code>div</code><code>&gt;</code>

<code>&lt;!-- 擷取該标簽的寬度 --&gt;</code>

<code>var w = id3.style.width;</code>

<code>console.log(w);</code>

<code>&lt;!-- 修改樣式 --&gt;</code>

<code>id3.style.width = '200px'</code>

頁面效果:修改前

<a href="http://s1.51cto.com/wyfs02/M02/7A/FD/wKioL1bESOSRizCOAAAM3SpJY_o215.png" target="_blank"></a>

頁面效果:修改後

<a href="http://s1.51cto.com/wyfs02/M00/7A/FD/wKioL1bESO-ijmHyAAAEdRqevg8430.png" target="_blank"></a>

常用事件:

<a href="http://s1.51cto.com/wyfs02/M01/7A/FE/wKiom1bEbrPChngOAAOLKOkh7Gc125.png" target="_blank"></a>

執行個體示範九、建立按鈕點選事件

<code>&lt;</code><code>form</code> <code>id</code><code>=</code><code>"F1"</code> <code>action</code><code>=</code><code>'https://www.baidu.com/s?'</code> <code>method</code><code>=</code><code>"GET"</code><code>&gt;</code>

<code>    </code><code>&lt;!-- 這裡的wd是傳給後端程式的value --&gt;</code>

<code>    </code><code>&lt;</code><code>input</code> <code>type</code><code>=</code><code>'text'</code> <code>name</code><code>=</code><code>'wd'</code> <code>/&gt;</code>

<code>  </code><code>&lt;!-- 定義點選事件,對應Foo()函數 --&gt;</code>  

<code>    </code><code>&lt;</code><code>input</code> <code>type</code><code>=</code><code>'button'</code> <code>value</code><code>=</code><code>'按鈕送出'</code> <code>onclick</code><code>=</code><code>'Foo();'</code> <code>/&gt;</code>

<code>&lt;/</code><code>form</code><code>&gt;</code>

<code>&lt;!-- 定義點選函數内容,送出'F1'對象表單 --&gt;</code>

<code>function Foo (){</code>

<code>    </code><code>document.getElementById('F1').submit()</code>

<code>}</code>

常用方法:

定義一個函數每隔一定的時間自動執行一次,括号中左邊寫執行的函數名逗号分割,右邊寫間隔的時長機關為毫秒。

        setInterval('Foo()',20)

用于停止setInterval的循環執行,這個函數括号中接受的參數為setInterval函數傳回的值。

        clearInterval(interval)

定義一個函數間隔一定的時間自動執行,與setInterval函數不同的是這個方法隻讓函數執行一次。

        setTimeout('Go()',10000)

用于取消setTimeout函數的執行,函數接受的參數是setTimeout函數傳回的值。

        clearTimeout()

搜尋框執行個體

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

<code>    </code><code>&lt;</code><code>title</code><code>&gt;搜尋框執行個體&lt;/</code><code>title</code><code>&gt;</code>

<code>    </code><code>.gray{color: gray;</code>

<code>        </code><code>height: 30px;</code>

<code>        </code><code>width: 220px;</code>

<code>   </code><code>}</code>

<code>   </code><code>.black{</code>

<code>     </code><code>color: black;</code>

<code>     </code><code>height: 30px;</code>

<code>    </code><code>width: 220px;</code>

<code> </code> 

<code>&lt;</code><code>input</code> <code>type</code><code>=</code><code>'text'</code> <code>class</code><code>=</code><code>'gray'</code> <code>id</code><code>=</code><code>'tip'</code> <code>value</code><code>=</code><code>'請輸入關鍵詞'</code> <code>onfocus</code><code>=</code><code>'Enter();'</code> <code>onblur</code><code>=</code><code>'Leave();'</code> <code>/&gt;</code>

<code> </code><code>&lt;</code><code>script</code> <code>type</code><code>=</code><code>"text/javascript"</code><code>&gt;</code>

<code>   </code><code>function Enter(){</code>

<code>       </code><code>var id = document.getElementById('tip');</code>

<code>       </code><code>id.className = 'black'</code>

<code>       </code><code>if(id.value=='請輸入關鍵詞' || id.value.trim()==''){</code>

<code>           </code><code>id.value = ''</code>

<code>       </code><code>}</code>

<code>   </code><code>function Leave(){</code>

<code>           </code> 

<code>           </code><code>id.value='請輸入關鍵詞'</code>

<code>           </code><code>id.className='gray'</code>

<code>       </code><code>}else{</code>

<code>           </code><code>id.className='black'</code>

<code> </code><code>&lt;/</code><code>script</code><code>&gt;</code>

跑馬燈執行個體

<code>    </code><code>&lt;</code><code>title</code><code>&gt;跑馬燈&amp;nbsp;&amp;nbsp;哈哈和進度條&amp;nbsp;&amp;nbsp;&lt;/</code><code>title</code><code>&gt;</code>

<code>    </code><code>function Go(){</code>

<code>    </code><code>&lt;!-- 擷取title文本内容 --&gt;</code>

<code>    </code><code>var content = document.title;</code>

<code>    </code><code>&lt;!-- 擷取内容的第一個字元 --&gt;</code>

<code>    </code><code>var firstChar = content.charAt(0)</code>

<code>    </code><code>&lt;!-- 擷取title的第二個至最後一個字元 --&gt;</code>

<code>    </code><code>var sub = content.substring(1,content.length)</code>

<code>    </code><code>document.title = sub + firstChar;</code>

<code>setInterval('Go()',1000);</code>

進度條執行個體

<code>    </code><code>&lt;</code><code>div</code> <code>style</code><code>=</code><code>"width:1000px;background-color:gray"</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>div</code> <code>id</code><code>=</code><code>'jindu'</code> <code>style</code><code>=</code><code>"width:10%;background-color:red;height:20px;"</code><code>&gt;&lt;/</code><code>div</code><code>&gt;</code>

<code>    </code><code>&lt;/</code><code>div</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>div</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>input</code> <code>type</code><code>=</code><code>'button'</code> <code>value</code><code>=</code><code>'點選停止'</code> <code>onclick</code><code>=</code><code>'Stop();'</code> <code>/&gt;</code>

<code>pro = 10</code>

<code>function Foo(){</code>

<code>    </code><code>var id = document.getElementById('jindu');</code>

<code>    </code><code>pro = pro + 1;</code>

<code>    </code><code>if(pro &gt; 100){</code>

<code>        </code><code>clearInterval(interval)</code>

<code>    </code><code>}else{ </code>

<code>        </code><code>id.style.width = pro+'%';</code>

<code>interval = setInterval('Foo()',20)</code>

<code>&lt;!-- 定義停止函數,用于停止進度條 --&gt;</code>

<code>function Stop(){</code>

<code>    </code><code>clearInterval(interval)</code>

本文轉自qw87112 51CTO部落格,原文連結:http://blog.51cto.com/tchuairen/1742721

繼續閱讀