1. 程式人生 > 實用技巧 >JavaScript學習系列部落格_39_JavaScript DOM查詢

JavaScript學習系列部落格_39_JavaScript DOM查詢

DOM查詢(獲取物件)

DOM文件物件模型。一個網頁就是一個document(文件),裡面包含了各種標籤,都是物件。面向物件,第一步就是得獲取到這個物件,然後才能做一些操作。模型把裡面的一些物件聯絡起來了,這樣就更加方便獲取和操作這些物件。

<!doctype html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="Generator" content="EditPlus®">
    <meta name="Author" content
=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <!-- CSS only --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk"
crossorigin="anonymous"> <title>Dom查詢</title> </head> <body> <div class="box1"> <ul class="list-group" id="city"> <li class="list-group-item" id="shanghai">上海</li> <li class="list-group-item">廣州</li>
<li class="list-group-item">深圳</li> <li class="list-group-item">杭州</li> <li class="list-group-item">成都</li> </ul> </div> <div class="box1"> gender: <input class="hello" type="radio" name="gender" value="male"/> Male <input class="hello" type="radio" name="gender" value="female"/> Female <br> <br> name: <input type="text" name="name" id="username" value="maoweizhao"/> </div> </body> <script> window.onload = function () { //1、獲取id為上海的元素節點 var sh = document.getElementById("shanghai"); //innerHTML 通過這個屬性可以獲取到元素內部的html程式碼 alert(sh.innerHTML); //2、獲取li元素節點 //getElementsByTagName()可以根據標籤名來獲取一組元素節點物件 //這個方法會給我們返回一個類陣列物件,所有查詢到的元素都會封裝到物件中 //即使查詢到的元素只有一個,也會封裝到陣列中返回 var lis = document.getElementsByTagName("li"); //列印li元素節點的內容 for (var i = 0; i < lis.length; i++) { alert(lis[i].innerHTML); } //3、獲取name=gender的所有元素節點 var inputs=document.getElementsByName("gender") //<input/>是自結束標籤,innerHMTL這個屬性沒有意義,已經獲得了name=gender的元素節點 //裡面的class、type、value、id這些都是這個節點物件的屬性都可以直接獲取了 alert(inputs[0].value+inputs[0].id+inputs[0].value); //注意的是class這個屬性,不能寫inpust[0].class這樣獲取,要用inputs[0].className alert(inputs[0].className); //4、返回id為city的元素的所有子節點 //首先獲取到id為city的元素節點。 var city = document.getElementById("city"); //獲取該元素節點的所有子節點,通過childNodes屬性 alert(city.childNodes.length); //childNodes屬性會獲取包括文字節點在呢的所有節點 //根據DOM標籤標籤間空白也會當成文字節點 //注意:在IE8及以下的瀏覽器中,不會將空白文本當成子節點, //所以該屬性在IE8中會返回5個子元素而其他瀏覽器是11個 //children屬性可以獲取當前元素的所有子元素,就是那五個li,不包括標籤之間那些空白的文字節點 alert(city.children.length); //firstChild可以獲取到當前元素的第一個子節點(包括空白文字節點) alert(city.firstChild);//會是一個空白的文件節點 //firstElementChild獲取當前元素的第一個子元素 alert(city.firstElementChild);//這裡獲取到的就會說第一個li //innerText該屬性可以獲取到元素內部的文字內容 alert(city.innerText);//會獲取到li裡面的文字:上海、廣州、、、 var sh = document.getElementById("shanghai"); //5、獲取sh的父節點 alert(sh.parentNode); //獲取sh的前一個兄弟節點(也可能獲取到空白的文字) alert(sh.previousSibling); //previousElementSibling獲取前一個兄弟元素,IE8及以下不支援 alert(sh.previousElementSibling); //6、獲取body標籤 var body = document.getElementsByTagName("body")[0];//方式1 //在document文件物件中有一個屬性body,它儲存的是body的引用 var body = document.body;//方式2 //7、獲取html根標籤 var html = document.documentElement; //8、獲取頁面中的所有元素,並且輸出 var all = document.all; for(var i=0 ; i<all.length ; i++){ console.log(all[i]); } //9、根據元素的class屬性值查詢一組元素節點物件, //getElementsByClassName()可以根據class屬性值獲取一組元素節點物件,但是該方法不支援IE8及以下的瀏覽器 //document.querySelector() //需要一個選擇器的字串作為引數,可以根據一個CSS選擇器來查詢一個元素節點物件 //雖然IE8中沒有getElementsByClassName()但是可以使用querySelector()代替 //使用該方法總會返回唯一的一個元素,如果滿足條件的元素有多個,那麼它只會返回第一個 var box1 = document.querySelector(".box1") //document.querySelectorAll() //該方法和querySelector()用法類似,不同的是它會將符合條件的元素封裝到一個數組中返回 //即使符合條件的元素只有一個,它也會返回陣列 var box1 = document.querySelectorAll(".box1"); } </script> </html>