JavaScript學習系列部落格_39_JavaScript DOM查詢
阿新 • • 發佈:2020-08-23
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>