一、BOM操作
瀏覽器對象模型 Browser Object Model
js代碼操作 瀏覽器
1、window對象
# window對象
window對象指代的就是瀏覽器窗口
window.innerHeight 瀏覽器窗口的高度
900
window.innerWidth 瀏覽器窗口的寬度
1680
# 新建窗口打開頁面 第二個參數寫空即可 第三個參數寫新建的窗口的大小和位置
window.open(url,target,features)
eg:window.open('https://www.baidu.com/','','height=400px,width=400px,top=400px,left=400px')
# 擴展父子頁面通信 window.opener() 瞭解
window.close() 關閉當前頁面
2、window子對象
window.navigator.appName
"Netscape"
window.navigator.appVersion
"5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"
window.navigator.userAgent # 用來表示當前是否是一個瀏覽器
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"
"""
擴展:防爬措施
1.最簡單最常用的一個就是 校驗當前請求的發起者是否是一個瀏覽器
(有以下配置信息,說明是瀏覽器)
userAgent
user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36
2、如何破解該措施
在你的代碼中加上上面的user-agent配置即可
"""
window.navigator.platform
"MacIntel"
# 如果是window的子對象 那麼window可以省略不寫
3、history對象
window.history.back() 回退到上一頁
window.history.forward() 前進到下一頁
# 對應的就是你使用的瀏覽器左上方的兩個的箭頭
4、location對象(掌握)
window.location.href # 獲取當前頁面的url
window.location.href = url # 跳轉到指定的url
window.location.reload() # 屬性頁面 瀏覽器左上方的小圓圈
5、彈出框
警告框
alert('請謹慎訪問此網站')
確認框
confirm('你確定加入遊戲嗎?')
false
confirm('你確定進入下一輪遊戲嗎?')
true
提示框
prompt('歡迎光臨','請先登入')
"歡迎加入"
6、計時器相關
1、過一段時間之後觸發(一次)
setTimeout(func1,3000)
clearTimeout(t)
2、每隔一段時間觸發一次(循環)
setInterval(func2,3000)
clearInterval(t)
複製代碼
<script>
// 1、過一段時間之後觸發(一次)
function func1() {
alert(123)
}
let t = setTimeout(func1,3000);
// 毫秒爲單位 3秒之後自動執行func1函數
clearTimeout(t) // 取消定時任務 如果你想要清除定時任務 需要日前用變量指代定時任務
//2、每隔一段時間觸發一次(循環)
function func2() {
alert(123)
}
function show(){
let t = setInterval(func2,3000); // 每隔3秒執行一次
function inner(){
clearInterval(t) // 清除定時器
}
setTimeout(inner,9000) // 9秒中之後觸發
}
show()
</script>
複製代碼
二、DOM操作
文檔對象模型 Document Object Model
js代碼操作 標籤
1、DOM相關概念
# DOM樹的概念
所有的標籤都可以稱之爲是節點
# JavaScript 可以通過DOM創建動態的 HTML:
JavaScript 能夠改變頁面中的所有 HTML 元素
JavaScript 能夠改變頁面中的所有 HTML 屬性
JavaScript 能夠改變頁面中的所有 CSS 樣式
JavaScript 能夠對頁面中的所有事件做出反應
# DOM操作
操作的是標籤 而一個html頁面上的標籤有很多
1.先學如何查找標籤
2.再學DOM操作標籤
# DOM操作需要用關鍵字 document 起首
2、查找標籤
(1)直接查找
複製代碼
"""
id查找
類查找
標籤查找
"""
# 注意三個方法的返回值是不一樣的
document.getElementById('d1')
<div id="d1">…</div>
document.getElementsByClassName('c1')
HTMLCollection [p.c1]0: p.c1length: 1__proto__: HTMLCollection
document.getElementsByTagName('div')
HTMLCollection(3) [div#d1, div, div, d1: div#d1]
let divEle = document.getElementsByTagName('div')[1]
divEle
<div> div>div </div>
"""
當你用變量名指代標籤對象的時候 一般情況下都推薦你書寫成
xxxEle
divEle
aEle
pEle
"""
複製代碼
(2)間接查找
複製代碼
let pEle = document.getElementsByClassName('c1')[0] # 注意是否需要索引取值
pEle.parentElement # 拿父節點
<div id="d1">"div
"<div>div>div</div><p class="c1">…</p><p>div>p</p></div>
pEle.parentElement.parentElement
<body>…</body>
pEle.parentElement.parentElement.parentElement
<html lang="en"><head>…</head><body>…</body></html>
pEle.parentElement.parentElement.parentElement.parentElement
null
let divEle = document.getElementById('d1')
divEle.children # 獲取所有的子標籤
divEle.children[0]
<div>div>div</div>
divEle.firstElementChild
<div>div>div</div>
divEle.lastElementChild
<p>div>p</p>
divEle.nextElementSibling # 同級別下面第一個
<div>div下面div</div>
divEle.previousElementSibling # 同級別上面第一個
<div>div上面的div</div>
複製代碼
3、節點操作
(1)
複製代碼
"""
通過DOM操作動態的創建img標籤
並且給標籤加屬性
最後將標籤添加到文本中
"""
let imgEle = document.createElement('img') # 創建標籤
imgEle.src = '111.png' # 給標籤設置默認的屬性
"111.png"
imgEle
imgEle.username = 'jason' # 自定義的屬性沒辦法點的方式直接設置
"jason"
imgEle
<img src="111.png">
imgEle.setAttribute('username','jason') # 既可以設置自定義的屬性也可以設置默認的書寫
undefined
imgEle
<img src="111.png" username="jason">
imgEle.setAttribute('title','一張圖片')
imgEle
<img src="111.png" username="jason" title="一張圖片">
let divEle = document.getElementById('d1')
undefined
divEle.appendChild(imgEle) # 標籤內部添加元素(尾部追加)
<img src="111.png" username="jason" title="一張圖片">
複製代碼
(2)
複製代碼
"""
創建a標籤
設置屬性
設置文本
添加到標籤內部
添加到指定的標籤的上面
"""
let aEle = document.createElement('a')
aEle
<a></a>
aEle.href = 'https://www.mzitu.com/'
"https://www.mzitu.com/"
aEle
<a href="https://www.mzitu.com/"></a>
aEle.innerText = '點我有你好看!' # 給標籤設置文本內容
"點我有你好看!"
aEle
<a href="https://www.mzitu.com/">點我有你好看!</a>
let divEle = document.getElementById('d1')
undefined
let pEle = document.getElementById('d2')
undefined
divEle.insertBefore(aEle,pEle) # 添加標籤內容指定位置添加
<a href="https://www.mzitu.com/">點我有你好看!</a>
複製代碼
(3)
複製代碼
"""
額外補充
appendChild()
removeChild()
replaceChild()
setAttribute() 設置屬性
getAttribute() 獲取屬性
removeAttribute() 移除屬性
"""
# innerText與innerHTML
divEle.innerText # 獲取標籤內部所有的文本
"div 點我有你好看!
div>p
div>span"
divEle.innerHTML # 內部文本和標籤都拿到
"div
<a href="https://www.mzitu.com/">點我有你好看!</a><p id="d2">div>p</p>
<span>div>span</span>
"
divEle.innerText = 'heiheihei'
"heiheihei"
divEle.innerHTML = 'hahahaha'
"hahahaha"
divEle.innerText = '<h1>heiheihei</h1>' # 不識別html標籤
"<h1>heiheihei</h1>"
divEle.innerHTML = '<h1>hahahaha</h1>' # 識別html標籤
"<h1>hahahaha</h1>"
複製代碼
4、獲取值操作
複製代碼
# 獲取用戶數據標籤內部的數據
let seEle = document.getElementById('d2')
seEle.value
"111"
seEle.value
"333"
let inputEle = document.getElementById('d1')
inputEle.value
複製代碼
複製代碼
# 如何獲取用戶上傳的文件數據
let fileEle = document.getElementById('d3')
fileEle.value # 無法獲取到文件數據
"C:\fakepath\02_測試路由.png"
fileEle.files
FileList {0: File, length: 1}0: File {name: "02_測試路由.png", lastModified: 1557043082000,
lastModifiedDate: Sun May 05 2019 15:58:02 GMT+0800 (中國標準時間),
webkitRelativePath: "", size: 29580, …}length: 1__proto__: FileList
fileEle.files[0] # 獲取文件數據
File {name: "02_測試路由.png", lastModified: 1557043082000,
lastModifiedDate: Sun May 05 2019 15:58:02 GMT+0800 (中國標準時間), webkitRelativePath: "", size: 29580, …}
複製代碼
5、class、css操作
複製代碼
let divEle = document.getElementById('d1')
undefined
divEle.classList # 獲取標籤所有的類屬性
DOMTokenList(3) ["c1", "bg_red", "bg_green", value: "c1 bg_red bg_green"]
divEle.classList.remove('bg_red') # 移除某個類屬性
undefined
divEle.classList.add('bg_red') # 添加類屬性
undefined
divEle.classList.contains('c1') # 驗證是否包含某個類屬性
true
divEle.classList.contains('c2')
false
divEle.classList.toggle('bg_red') # 有則刪除無則添加
false
divEle.classList.toggle('bg_red')
true
divEle.classList.toggle('bg_red')
false
divEle.classList.toggle('bg_red')
true
divEle.classList.toggle('bg_red')
false
divEle.classList.toggle('bg_red')
true
# DOM操作操作標籤樣式 統一先用style起首
let pEle = document.getElementsByTagName('p')[0]
undefined
pEle.style.color = 'red'
"red"
pEle.style.fontSize = '28px'
"28px"
pEle.style.backgroundColor = 'yellow'
"yellow"
pEle.style.border = '3px solid red'
"3px solid red"
複製代碼
前端開發之 JavaScript 的 BOM 和 DOM 操作
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.