獲取網頁元素
queryselector
queryselector是 JavaScript 中用于選擇 DOM 元素的重要方法,它允許使用 CSS 選擇器語法來查找頁面中的元素。
一般queryselector獲取的元素都是html中第一個選擇器的元素?
支持選擇器類型:類選擇器(.class) ,id選擇器(#class),屬性選擇器[attribute],偽類選擇器(father:child)
演示代碼
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div>英雄聯盟</div><br><div id="LOL">英雄聯盟</div><br><div class="CF">穿越火線</div><br><div><div>我的世界</div></div><br></body>
<script>let NAME1=document.querySelector('div')let NAME2=document.querySelector('#LOL')let NAME3=document.querySelector('.CF')let NAME4=document.querySelector('div div')console.log(NAME1)console.log(NAME2)console.log(NAME3)console.log(NAME4)
</script>
</html>
演示結果
?querySelectorAll
?querySelector只能獲取html中一個選擇器標簽,但是querySelectorAll可以獲取全部的選擇器標簽
演示代碼
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div>英雄聯盟</div><br><div>洛克王國</div><br><div>穿越火線</div><br><div>我的世界</div><br></body>
<script>let NAME1=document.querySelectorAll('div')console.log(NAME1)
</script>
</html>
演示結果
?
事件的認識
我們學習完了獲取網頁標簽元素是為了更好的認識事件,當我們在操作網頁的時候就是一種事件的發生,事件的元素有:事件源,事件的類型,事件的處理方式
事件源:是那個標簽發生了事件
事件的類型:發生了什么類型的事件
事件的處理方式:發生這個事件之后我們的網頁需要怎么處理
我們來看一段代碼
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><input type="button" value="點我發生事件" class="gan">
</body>
<script>let NAME1=document.querySelector('.gan')NAME1.onclick=function(){alert("Hello,World")}
</script>
</html>
演示結果
?當我們點擊這個按鈕的時候就會發生一個點擊類型的事件,而這個事件的事件源就是這個按鈕,事件的處理方式就是接下來會彈出一個窗口
獲取/修改元素的內容
在修改網頁元素的內容時我們一樣需要獲取選擇器標簽,當我們獲取選擇器標簽后有兩個接口可以修改標簽的內容,一個是修改標簽文本,一個是直接修改標簽html的結構
innerText?
當我們的標簽是一個文本內容時,選擇它并且使用這個接口可以直接修改文本
演示代碼
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div class="gan">HELLO,WORLD</div><div class="gan">HELLO,WORLD</div><div class="gan">HELLO,WORLD</div>
</body>
<script>let NAME1=document.querySelector('.gan')console.log(NAME1.innerText)NAME1.innerText='<div>Hello,World</div>'console.log(NAME1.innerText)
</script>
</html>
演示結果
?
innerHTML
innerHTML用于獲取或設置標簽的HTML的內容
演示代碼
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><div class="gan">HELLO,WORLD</div><div class="gan">HELLO,WORLD</div><div class="gan">HELLO,WORLD</div>
</body>
<script>let NAME1=document.querySelector('.gan')console.log(NAME1.innerHTML)NAME1.innerHTML='<div>Hello,World</div>'console.log(NAME1.innerHTML)
</script>
</html>
演示結果
?修改img屬性
我們先定義一個img圖像,并獲取他和他的屬性信息
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.type{height: 150px;width: 300px;}</style>
</head>
<body><img src="./微信圖片_20250516111746.jpg" alt="這是vue的log" title="Vue3" class="type">
</body>
<script>let tim=document.querySelector('.type')console.dir(tim)
</script>
</html>
這里的dir使用來獲取tim對象的屬性的
演示結果
我們可以看到我們為img的添加的屬性都可以使用,console.dir來查看
我們可以結合上面的點擊事件來修改img的屬性使他更靈活起來
演示代碼
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.type{height: 150px;width: 300px;}</style>
</head>
<body><img src="a20250516111746.jpg" alt="這是vue的log" title="Vue3" class="type" >
</body>
<script>let tim=document.querySelector('.type')tim.onclick=function(){if(tim.src.lastIndexOf('a20250516111746.jpg')!==-1){tim.src='./a74A6416B588.jpg'}else{tim.src='./a20250516111746.jpg'}}
</script>
</html>
演示結果
?
?
我們每點擊一次圖片,圖片都換進行切換
獲取/修改樣式屬性?
行內樣式操作格式
text1.style.fontSize="20px"text1.style.cssText="font-size:20px"
這里一共有兩種模板可選
元素.style.屬性=屬性值,第一種命名方式需要去掉中間的-號,第二個單詞的第一個字母大寫
元素.style.cssText=“屬性文本”?
類名樣式操作
類名樣式操作格式
對象名.className="新的類名"
當我們要更改標簽的類時,我們可以通過這種方式更改
演示代碼
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.TEXT1{background-color: aqua;color: red;width: 100%;height: 100%;}.TEXT2{background-color: aquamarine;color: khaki;width: 100%;height: 100%;}html body{background-color: black;}</style>
</head>
<body><div style="font-size: 50px;" class="TEXT1">HELLO,WORLD</div>
</body>
<script>let text1=document.querySelector('.TEXT1')text1.onclick=function(){if(text1.className=="TEXT1"){text1.className="TEXT2"}else{text1.className="TEXT1"}}
</script>
</html>
這里我們實現了一個點擊就會切換類樣式的程序
?
?
節點操作?
插入到容器的最后
DOM數節點的創建和存放
創建DOM節點
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style></style>
</head>
<body><span></span><div class="contaign"></div>
</body>
<script>let text1=document.createElement('span')text1.className="CLASSNAME"text1.id="IDNAME"text1.innerText="HELLO,WORLD"console.log(text1)</script>
</html>
演示結果
?
這就是我們創建的節點
?但是網頁并不會輸出什么
將節點存放在一個容器中再輸出到網頁
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style></style>
</head>
<body><span></span><div class="contaign"></div>
</body>
<script>let text1=document.createElement('span')text1.className="CLASSNAME"text1.id="IDNAME"text1.innerText="HELLO,WORLD"console.log(text1)let conta=document.querySelector('.contaign')conta.appendChild(text1)console.log(conta)
</script>
</html>
演示結果
?網頁輸出結果
?這里只輸出了一句,說明創建的DOM節點不單獨生效,只放在容器里生效
插入到指定容器節點之前
?演示容器的節點
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style></style>
</head>
<body><div class="contaign"><div></div><div></div><div></div></div>
</body>
<script>let conta=document.querySelector('.contaign')console.log(conta.children)
</script>
</html>
演示結果
?這里的children相當于一個容器,
使用insertBefore進行節點插入
使用格式
var insertedNode = parentNode.insertBefore(newNode, referenceNode);
其中newNode是需要被插入的節點,referenceNode是選擇在那個節點位置之前插入
?insertedNode是返回的被插入節點
演示代碼
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style></style>
</head>
<body><span></span><div class="contaign"><div></div><div></div><div></div></div>
</body>
<script>let TEXT1=document.createElement("span")TEXT1.innerText="HELLO,WORLD"let conta=document.querySelector('.contaign')conta.insertBefore(TEXT1,conta.children[1])console.log(conta.children)
</script>
</html>
演示結果
?當我們插入兩次DOM樹會按最后一次的算
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style></style>
</head>
<body><span></span><div class="contaign"><div></div><div></div><div></div></div>
</body>
<script>let TEXT1=document.createElement("span")TEXT1.innerText="HELLO,WORLD"let conta=document.querySelector('.contaign')conta.insertBefore(TEXT1,conta.children[1])conta.insertBefore(TEXT1,conta.children[1])console.log(conta.children)
</script>
</html>
演示結果
?
這里只有一個span
當我們單獨修改節點的數據后,DOM樹對應該節點的數據也會被修改
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.TEXT0{background-color: aqua;color: red;}</style>
</head>
<body><span></span><div class="contaign"><div></div><div></div><div></div></div>
</body>
<script>let TEXT1=document.createElement("span")TEXT1.innerText="HELLO,WORLD"let conta=document.querySelector('.contaign')conta.insertBefore(TEXT1,conta.children[1])TEXT1.className="TEXT0"console.log(conta.children)
</script>
</html>
演示結果
?刪除容器中的指定節點
使用removeChild刪除節點
使用格式
oldChild = element.removeChild(child);
child為被刪除的節點,element為容器,oldChild為返回的被刪除節點
演示代碼
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.TEXT0{background-color: aqua;color: red;}</style>
</head>
<body><span></span><div class="contaign"><div></div><div></div><div></div></div>
</body>
<script>let TEXT1=document.createElement("span")TEXT1.innerText="HELLO,WORLD"let conta=document.querySelector('.contaign')conta.insertBefore(TEXT1,conta.children[1])TEXT1.className="TEXT0"conta.removeChild(TEXT1)console.log(conta.children)
</script>
</html>
演示結果
?雖然節點被刪除了,但是節點仍然存在于Web內存中
?
?
?
?
?
?