一、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><</code><code>div</code> <code>id</code><code>=</code><code>"n1"</code><code>></code>
<code><</code><code>p</code><code>>hello aaaaaa</</code><code>p</code><code>></code>
<code></</code><code>div</code><code>></code>
<code><</code><code>script</code> <code>type</code><code>=</code><code>"text/javascript"</code><code>></code>
<code><!-- 通過标簽ID擷取到标簽對象 --></code>
<code>var name1 = document.getElementById('n1');</code>
<code><!-- 修改标簽文本内容為'tuchao' --></code>
<code>name1.innerText = 'tuchao';</code>
<code></</code><code>script</code><code>></code>
執行個體示範二、通過标簽name修改多個标簽的内容
11
12
13
14
15
<code><</code><code>hr</code><code>/></code>
<code><</code><code>div</code> <code>name</code><code>=</code><code>"n2"</code><code>> <</code><code>p</code><code>>heheheheeeeeee</</code><code>p</code><code>></</code><code>div</code><code>></code>
<code><</code><code>div</code> <code>name</code><code>=</code><code>"n2"</code><code>> <</code><code>p</code><code>>bbabababbabab</</code><code>p</code><code>></</code><code>div</code><code>></code>
<code><!-- 通過标簽name擷取到标簽對象 --></code>
<code>var name2 = document.getElementsByName('n2');</code>
<code><!-- 當擷取到多個同name标簽時,則通過序号來差別,name2[0]表示第一個,name2[1]則表示第二個 --></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><!-- 通過标簽tag擷取到标簽對象 --></code>
<code>var name3 = document.getElementsByTagName('div');</code>
<code><!-- 對該對象進行循環,逐一取出每個對象進行修改 --></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><!-- 建立一個a标簽 --></code>
<code>var tag = document.createElement("a");</code>
<code><!-- 給建立的标簽賦予連結 --></code>
<code>tag.href = '</code>
<code> </code><code><!-- 給标簽設定文本字元 --></code>
<code>tag.innerText = '點希望';</code>
<code>var id1 = document.getElementById('n1');</code>
<code><!-- 給id1對象添加标簽 --></code>
<code>id1.appendChild(tag);</code>
<a href="http://s2.51cto.com/wyfs02/M01/7A/FD/wKiom1bEOjWxVENhAAAC5BDH8aE193.png" target="_blank"></a>
執行個體示範五、标簽替換
<code><!-- 建立标簽對象 --></code>
<code>var tag = "<</code><code>a</code> <code>href</code><code>=</code><code>'http://www.baidu.com'</code><code>>百度一下</</code><code>a</code><code>>"</code>
<code><!-- 替換标簽 --></code>
<code>id1.innerHTML = tag;</code>
頁面效果會顯示原id="n1"的div标簽消失了,替換成了自定義的超連結标簽。
執行個體示範六、修改标簽的Class
18
19
20
21
22
23
24
<code><!DOCTYPE html></code>
<code><</code><code>html</code> <code>lang</code><code>=</code><code>"en"</code><code>></code>
<code><</code><code>head</code><code>></code>
<code> </code><code><</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>></code>
<code> </code><code><</code><code>title</code><code>>js_st1</</code><code>title</code><code>></code>
<code> </code><code><</code><code>style</code> <code>type</code><code>=</code><code>"text/css"</code><code>></code>
<code> </code><code>.hide {display: none;}</code>
<code> </code><code>.n22 {color:red;}</code>
<code> </code><code></</code><code>style</code><code>></code>
<code></</code><code>head</code><code>></code>
<code><</code><code>body</code><code>></code>
<code> </code><code><</code><code>div</code> <code>class</code><code>=</code><code>"n22"</code> <code>name</code><code>=</code><code>"n2"</code><code>> <</code><code>p</code><code>>heheheheeeeeee</</code><code>p</code><code>></</code><code>div</code><code>></code>
<code> </code><code><</code><code>hr</code><code>/></code>
<code> </code><code><</code><code>div</code> <code>name</code><code>=</code><code>"n2"</code><code>> <</code><code>p</code><code>>bbabababbabab</</code><code>p</code><code>></</code><code>div</code><code>></code>
<code>var id2 = document.getElementsByName('n2');</code>
<code><!-- 将原樣式n22替換為hide樣式 --></code>
<code>id2[0].className = 'hide'</code>
<code></</code><code>script</code><code>> </code>
<code></</code><code>body</code><code>></code>
<code></</code><code>html</code><code>></code>
此時第一個div在頁面中将不會顯示了
執行個體示範七、修改标簽的name值
<code><</code><code>div</code> <code>id</code><code>=</code><code>"n3"</code> <code>name</code><code>=</code><code>"dog"</code><code>> </</code><code>div</code><code>></code>
<code><!-- 通過id擷取到标簽對象 --></code>
<code>var id3 = document.getElementById('n3');</code>
<code><!-- 使用log列印原name值 --></code>
<code>console.log(id3.getAttribute('name'));</code>
<code><!-- 修改标簽的name值為'cow' --></code>
<code>id3.setAttribute('name','cow');</code>
<a href="http://s4.51cto.com/wyfs02/M01/7A/FD/wKioL1bERcHC_WC5AAAtAWRMTsw355.png" target="_blank"></a>
執行個體示範八、修改标簽樣式
<code><</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>> </</code><code>div</code><code>></code>
<code><!-- 擷取該标簽的寬度 --></code>
<code>var w = id3.style.width;</code>
<code>console.log(w);</code>
<code><!-- 修改樣式 --></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><</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>></code>
<code> </code><code><!-- 這裡的wd是傳給後端程式的value --></code>
<code> </code><code><</code><code>input</code> <code>type</code><code>=</code><code>'text'</code> <code>name</code><code>=</code><code>'wd'</code> <code>/></code>
<code> </code><code><!-- 定義點選事件,對應Foo()函數 --></code>
<code> </code><code><</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>/></code>
<code></</code><code>form</code><code>></code>
<code><!-- 定義點選函數内容,送出'F1'對象表單 --></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><</code><code>title</code><code>>搜尋框執行個體</</code><code>title</code><code>></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><</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>/></code>
<code> </code><code><</code><code>script</code> <code>type</code><code>=</code><code>"text/javascript"</code><code>></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></</code><code>script</code><code>></code>
跑馬燈執行個體
<code> </code><code><</code><code>title</code><code>>跑馬燈&nbsp;&nbsp;哈哈和進度條&nbsp;&nbsp;</</code><code>title</code><code>></code>
<code> </code><code>function Go(){</code>
<code> </code><code><!-- 擷取title文本内容 --></code>
<code> </code><code>var content = document.title;</code>
<code> </code><code><!-- 擷取内容的第一個字元 --></code>
<code> </code><code>var firstChar = content.charAt(0)</code>
<code> </code><code><!-- 擷取title的第二個至最後一個字元 --></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><</code><code>div</code> <code>style</code><code>=</code><code>"width:1000px;background-color:gray"</code><code>></code>
<code> </code><code><</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>></</code><code>div</code><code>></code>
<code> </code><code></</code><code>div</code><code>></code>
<code> </code><code><</code><code>div</code><code>></code>
<code> </code><code><</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>/></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 > 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><!-- 定義停止函數,用于停止進度條 --></code>
<code>function Stop(){</code>
<code> </code><code>clearInterval(interval)</code>
本文轉自qw87112 51CTO部落格,原文連結:http://blog.51cto.com/tchuairen/1742721