1. 程式人生 > 其它 >JS中BOM與DOM操作

JS中BOM與DOM操作

目錄

BOM操作

window物件

是與瀏覽器視窗做互動的語言

BOM = Browser Object Model 是指瀏覽器物件模型,它可以使Javascript 有能力和瀏覽器進行對話

window.open()
//開啟一個新的視窗
window.open('https://www.baidu.com/','','width=300px,left=200px')
//開啟的網址 以及新視窗的高度 寬度 都可以設定

window.close()
//關閉當前視窗

navigator.userAgent
//標識自己是一個瀏覽器

history.forward()
//瀏覽器前進一頁
history.back()
//瀏覽器退回上一頁
window.location.reload()
//重新載入當前頁

window.location.href
//獲取當前網頁網址
location.href="URL" 
// 跳轉到指定頁面

瀏覽器彈窗

1.警告框  
  alert('文字訊息')
  //自帶確認按鈕 需要點選確認彈窗消失
  警告框經常用於確保使用者可以得到某些資訊,當警告框出現後,使用者需要點選確定按鈕才能繼續進行操作。

2.確認框
  confirm('文字訊息')
  //當確認框出現後,使用者需要點選確定或者取消按鈕才能繼續進行操作。如果使用者點選確認,那麼返回值為 true。如果使用者點選取消,那麼返回值為 false。
  let l1 = confirm('你願意嗎?')
  console.log(l1)//true

3.提示框
  prompt('1+1=?')
  //出現提醒訊息,並用戶可以輸入訊息 可以用變數接受訊息
  // 點選取消等 null

計時相關

通過js程式碼我們可以設定在一段時間間隔之後來執行程式碼,而不是

呼叫函式後立刻執行,我們稱之為定時任務

設定定時任務
let time1 = setTimeout('js程式碼',毫秒)
//設定定時任務
setTimeout()方法會粗儲存在變數 time1中
js程式碼 = 任何js程式碼或者函式
毫秒 = 從執行開始後的多少毫秒倒計時開始執行1秒=1000毫秒

取消定時任務
clearTimeout(time1)
//立即取消這個任務

設定迴圈任務
let time2 = setInterval('func',3000)
//每個3000毫秒執行一次

取消迴圈任務
clearInterval(time2)
//立即取消這個任務


小練習

function showtime(){
  alert('你還好嗎?')
}

setTimeout(showtime,3000)
//3000毫秒後啟動 showtime函式 只啟動一次

setInterval(showtime,3000)
//無限啟動 每 3000毫秒一次

如果需要關閉迴圈任務

let time2 = setInterval(showtime,3000)
clearInterval(time2)
需要變數接受然後關閉

DOM操作

DOM(Document Object Model)是一套對文件的內容進行抽象和概念化的方法。

DOM操作就是通過js程式碼來操作標籤.

DOM-查詢標籤

/*
  1.JS中變數名的命名風格推薦是駝峰體
  2.js程式碼中如果需要反覆用一個標籤,可以使用變數來接受 規律是 XXXEle 
  */

1.document.getElementById('ID')
通過id來查詢標籤 結果就是標籤本身

2.document.getElementByClassName('classname')[0]
通過類名來查詢標籤 返回一個數組,裡面的每一個標籤可以通過索引取值到具體標籤

3.document.getElementByTagName('span')[0]
通過標籤名來查詢標籤 返回一個數組 可以通過索引取值到具體標籤


4.divEle = document.getElementById('d1')
  獲取標籤本身
  divEle.firstElementChild
  通過標籤獲取標籤內第一個子標籤元素
  
5.divEle.nextElementSibling
  通過標籤獲得同級別的下一個標籤
  
6.divEle.previousElementSibling
  通過標籤獲得同級別的上一個標籤
  
7.divEle.parentElement
  通過標籤獲得它的父級標籤
  

操作標籤

語法:document.createElement('標籤名')

let divEle = document.createElement('div')

let aEle = document.createElement('a')

給建立的標籤新增屬性

let aEle = document.createElement('a')
aEle.href = 'http://www.baidu.com'
可以直接通過.的方法只能夠新增標籤的預設屬性 id class 等

aELe.setAttribute('屬性名','屬性值')
推薦使用這種方式新增 可以操作預設的和自定義的都可以


aEle.innerText = '新的文字內容'
可以對標籤設定文字,會自動替換之前的所有文字


aEle.innerText
獲取標籤內的文字內容


divEle.appendChild(aEle)
將程式碼建立的標籤插入到一個標籤內,這樣才生效有顯示作用

divEle.removeChild(aEle)
通過父元素呼叫該方法刪除標籤

.innerHTML			
獲取標籤內部所有的HTML標籤加文字
.innerHTML = "<p>2</p>"
也可以重新設定標籤


divEle.getAttribute("age")
獲取標籤的某個屬性值

獲取值操作

1.針對input 讓使用者輸入的和使用者選擇的標籤
  先查詢到獲取使用者資料的標籤
  let inputEle = document.getElementById('ID')
標籤物件.value
//直接獲取標籤的值
inputEle.value
//就可以拿到了使用者輸入的資料

2.針對使用者單選的操作
  首先查詢到使用者選擇的標籤
  let selectEle = document.getElementById('ID')
  selectEle.value
  //可以拿到使用者選擇的值

3.針對使用者上傳檔案操作 獲取使用者上傳的檔案
  let fileEle = document.getElementById('ID')
  fileEle.files
  //可以拿到使用者上傳的檔案列表
  fileEle.files[0]
  //可以拿到真正的檔案物件

標籤CSS/Class樣式操作

Class樣式操作 首先利用查詢標籤 先拿到要操作的標籤本身

divEle = document.getElementById('ID')

divEle.className
獲取該標籤內所有的 class類名

divEle.remove('class名稱')  
刪除指定類

divEle.add('class名稱')  
新增一個樣式類

divEle.contains('class名稱')  
判斷該樣式名是否存在 存在返回true,否則返回false

divEle.toggle('class名稱') 
存在就刪除,否則新增


css操作

divEle = document.getElementById('ID')

都需要先生成標籤物件本身

通過js程式碼去改變css樣式

語法結構:

標籤物件.style.要改變的屬性 = '屬性值'

divEle.style.backgroundColor="red"
//通過標籤物件修改 背景顏色樣式

divEle.style.width ='100px'
//通過標籤物件修改 背景顏色樣式

divEle.style.left ='100px'
//通過標籤物件修改 背景顏色樣式

事件

有能力使 HTML 事件觸發瀏覽器中的動作(action)

當用戶點選某個 HTML 元素時啟動一段 JavaScript

onclick        當用戶點選某個物件時呼叫的事件控制代碼。
//單擊事件
ondblclick     當用戶雙擊某個物件時呼叫的事件控制代碼。
//雙擊事件

onfocus        元素獲得焦點。 
//輸入框選中事件
onblur         元素失去焦點。   
//輸入框離開事件
onchange       域的內容被改變。  
//選擇框的內容被改變時

onkeydown      某個鍵盤按鍵被按下。         
onkeypress     某個鍵盤按鍵被按下並鬆開。
onkeyup        某個鍵盤按鍵被鬆開。
onload         一張頁面或一幅影象完成載入。
onmousedown    滑鼠按鈕被按下。
onmousemove    滑鼠被移動。
onmouseout     滑鼠從某元素移開。
onmouseover    滑鼠移到某元素之上。
//滑鼠移入傳送的事件

onselect      在文字框中的文字被選中時發生。
onsubmit      確認按鈕被點選,使用的物件是form。

如何繫結事件

方式一:
直接在標籤內部定義事件
 
<p onclick='function()'>快來點我</p>
<!--對該標籤綁定了一個點選事件 點選此標籤後 觸發 function函式-->


方式二:
使用標籤物件進行繫結事件
let inputNameEle = document.getElemenById('id')
/*通過id查詢到標籤*/

inputNameEle.onfocus = function(){
  this.value = ''
}
//this自己本身的意思
//對這個物件 新增 獲得焦點事件 獲得焦點後觸發 將自身的值改為 空

事件實操

判斷賬號密碼輸入

<p>name:
    <input type="text" id="name">
    <span style="color: red">11</span>
</p>

<p>password:
    <input type="text" id="password">
    <span style="color: red">11</span>
</p>

<button id="subtn">登入</button>

<script>
    let buttonEle = document.getElementById('subtn')
    //找到這個登入這個按鈕
    buttonEle.onclick = function () {
      //按鈕繫結一個 單擊事件 單擊時執行
        let nameEle = document.getElementById('name')
        let passwordEle = document.getElementById('password')
        if (nameEle.value == '123') {
          //判斷name物件的值是否是123
            nameEle.nextElementSibling.innerText = '賬號不能123';       //如果是 則把name物件的下一個標記內新增內容
            if (passwordEle.value == '123') {
                passwordEle.nextElementSibling.innerText = '密碼不能123';}
        }
    }