前端--javaScript之BOM和DOM

来源:https://www.cnblogs.com/zycorn/archive/2018/09/07/9600725.html
-Advertisement-
Play Games

BOM和DOM概述 BOM(Browser Object Model):是指瀏覽器對象模型,它使js有能力和瀏覽器進行"對話". DOM(Document Object Model):是指文檔對象模型,通過它,可以訪問HTML文檔的所有元素. BOM: window對象是客戶端js最高層對象之一,由 ...


BOM和DOM概述

BOM(Browser Object Model):是指瀏覽器對象模型,它使js有能力和瀏覽器進行"對話".

DOM(Document Object Model):是指文檔對象模型,通過它,可以訪問HTML文檔的所有元素.

 

BOM: 

window對象是客戶端js最高層對象之一,由於window對象是其他大部分對象的共同祖先,在調用window對象的方法和屬性時,可以省略window對象的引用.例如window.document.write()可以簡寫成:document.write().

一.window對象

所有瀏覽器都支持window對象.它表示瀏覽器視窗.

*如果文檔包含框架(frame 或 iframe 標簽),瀏覽器會為 HTML 文檔創建一個 window 對象,併為每個框架創建一個額外的 window 對象。

*沒有應用於 window 對象的公開標準,不過所有瀏覽器都支持該對象。

所有js全局對象.函數以及變數均自動成為window對象的成員.

全局變數是window對象的屬性.全局函數是window對象的方法.

一些常用的window方法:

  • window.innerHeight------瀏覽器視窗的內部高度
  • window.innerWidth------瀏覽器視窗的內部寬度
  • window.open()------打開新視窗
  • window.close()------關閉當前視窗

二.navigator對象(瞭解)

瀏覽器對象,通過這個對象可以判定用戶所使用的瀏覽器,包含瀏覽器信息.

navigator.appName        //web瀏覽器全稱
navigator.appVersion        //web瀏覽器廠商和版本的詳細字元串
navigator.userAgent        //客戶端絕大部分信息
navigator.platform        //瀏覽器運行所在的操作系統

三.screen對象(瞭解)

屏幕對象,不常用.

一些屬性:

screen.availWidth------可用的屏幕寬度

screen.availHeight------可用的屏幕高度

四.history對象(瞭解)

window.history 對象包含瀏覽器的歷史.

瀏覽器歷史對象,包含了用戶對當前頁面的瀏覽歷史,但我們無法查看具體地址,可以簡單的用來前進或後退一個頁面

history.forward()    //前進一頁
history.back()        //後退一頁

五.location對象

window.location對象用於獲得當前頁面的地址(URL),並把瀏覽器定向到新的頁面.

常用屬性和方法:

location.href        //獲取URL
location.href = "URL"    //跳轉到指定頁面
location.reload()        //重新載入頁面

六.彈出框

可以在js中創建三種消息框:警告框,確認框,提示框

1.警告框

  警告框經常用於確保用戶可以得到某些信息.

  當警告框出現後,用戶需要點擊確定按鈕才能繼續進行操作.

語法:

alert("你看到了麽?");

2.確認框(瞭解)

  確認框用於使用戶可以驗證或者接受某些信息.

  當確認框出現後,用戶需要點擊確認或者取消按鈕才能繼續進行操作.

  如果用戶點擊確認,name返回值為True,如果點擊取消,name返回值為False.

語法:

confirm("你確定麽?")

3.提示框(瞭解)

  提示框經常用於提示用戶在進入頁面輸入某個值.

  當提示框出現後,用戶需要輸入某個值,然後點擊確認或取消按鈕才能繼續操縱

  如果用戶點擊確認,那麼返回值為輸入的值,如果用戶點擊取消,那麼返回值為null.

語法:

prompt("請在下方輸入:","你的答案")

七.計時相關

通過使用js,我們可以在一定時間間隔之後來執行代碼,而不是在函數調用後立即執行.我們稱之為計時事件.

1.setTimeout()

var t = setTimeout("js語句","毫秒")

setTimeout()方法會返回某個值,在上面的語句中,值被儲存在名為t的變數中.

2.clearTimeout():清除計時

語法:

//在指定時間之後執行函數
var t = setTimeout(function(){alert(123);},3000)
//取消setTimeout
clearTimeout(t)

3.setInterval()

  setInterval()方法可按照指定的周期(以毫秒計)來調用或計算表達式.

  setInterval()方法會不停的調用函數,直到clearInterval()被調用或者視窗被關閉.

語法:

setInterval("js語句","時間間隔")

4.clearInterval()

  clearInterval()方法可取消有setInterval()設置的timeout.

  clearInterval()方法的參數必須是由setInterval()返回的ID值.

語法:

clearInterval(setInterval返回的ID值)

DOM

一.什麼是HTML DOM

  HTML Document Object Model (文檔對象類型)

  HTML DOM 定義了訪問和操作HTML文檔的標準方法

  HTML DOM 把HTML 文檔呈現為帶有元素,屬性和文本的樹結構(節點樹)

二.DOM樹

DOM樹是為了展示文檔中各個對象之間的關係用於對象的導航.

三.DOM節點

1.節點類型

HTML 文檔中的每一個成分都是節點.

DOM是這樣規定的:

  • 文檔節點(document對象):代表整個文檔
  • 元素節點(element 對象):代表一個元素(標簽)
  • 文本節點(text對象):代表元素(標簽)中的文本
  • 屬性節點(attribute對象):代表一個屬性,元素(標簽)才有屬性
  • 註釋是註釋節點(comment對象) 

JavaScript 可以通過DOM創建動態的 HTML:

  • JavaScript 能夠改變頁面中的所有 HTML 元素
  • JavaScript 能夠改變頁面中的所有 HTML 屬性
  • JavaScript 能夠改變頁面中的所有 CSS 樣式
  • JavaScript 能夠對頁面中的所有事件做出反應

document和attribute節點是重點

2.節點關係

四.查找標簽

1.直接查找

document.getElementById            根據ID獲取一個標簽
document.getElementsByClassName    根據class屬性獲取
document.getElementsByTagName      根據標簽名獲取標簽集合

2.間接查找

parentElement            父節點標簽元素
children               所有子標簽
firstElementChild      第一個子標簽元素
lastElementChild           最後一個子標簽元素
nextElementSibling         下一個兄弟標簽元素
previousElementSibling     上一個星弟標簽元素

五.節點操作

1.創建節點

語法:

creatElement(標簽名)

示例:

var divEle = document.createElement("div");

2.添加節點

語法 :

追加一個子節點(作為最後的子節點)

父標簽.appendChild(新標簽)

把增加的節點放在某個節點的前邊

父標簽.insertBefore(新標簽,子標簽)

3.刪除節點

語法:

獲得要刪除的元素,通過父元素調用刪除.

父標簽.removeChild(要刪除的節點)

4.替換節點

語法:

父標簽.replaceChild(新標簽,舊標簽)

5.屬性節點

獲取文本節點的值:

var divEle = document.getElementById("d1")
divEle.innerText
divEle.innerHTML

設置文本節點的值:

var divEle = document.getElementById("d1")
divEle.innerText = "1"
divEle.innerHTML = "<p>2</p>"

attribute操作

var divEle = document.getElementById("d1");
divEle.setAttribute("age","18")
divEle.getAttribute("age")
divEle.removeAttribute("age")

// 自帶的屬性還可以直接.屬性名來獲取和設置
imgEle.src
imgEle.src="..."

6.獲取值操作

語法:

elementNode.value

適用於以下標簽:

.input

.select

.textarea

var iEle = document.getElementById("i1");
console.log(iEle.value);
var sEle = document.getElementById("s1");
console.log(sEle.value);
var tEle = document.getElementById("t1");
console.log(tEle.value);

7.class的操作

className  獲取所有樣式類名(字元串)

classList.remove(cls)  刪除指定類
classList.add(cls)  添加類
classList.contains(cls)  存在返回true,否則返回false
classList.toggle(cls)  存在就刪除,否則添加

8.指定css操作

obj.style.backgroundColor="red"

js操作css屬性的規律:

1.對於沒有中橫線的css屬性一般直接使用style,屬性名即可.如:

obj.style.margin
obj.style.width
obj.style.left
obj.style.position

2.對於含有中橫線的css屬性,將中橫線後面的第一個字母換成大寫即可.如:

obj.style.marginTop
obj.style.borderLeftWidth
obj.style.zIndex
obj.style.fontFamily

六.事件

1.事件類型:

onclick        當用戶點擊某個對象時調用的事件句柄。
ondblclick     當用戶雙擊某個對象時調用的事件句柄。

onfocus        元素獲得焦點。               練習:輸入框
onblur         元素失去焦點。               應用場景:用於表單驗證,用戶離開某個輸入框時,代表已經輸入完了,我們可以對它進行驗證.
onchange       域的內容被改變。             應用場景:通常用於表單元素,當元素內容被改變時觸發.(三級聯動)

onkeydown      某個鍵盤按鍵被按下。          應用場景: 當用戶在最後一個輸入框按下回車按鍵時,表單提交.
onkeypress     某個鍵盤按鍵被按下並鬆開。
onkeyup        某個鍵盤按鍵被鬆開。

onload         一張頁面或一幅圖像完成載入。

onmousedown    滑鼠按鈕被按下。
onmousemove    滑鼠被移動。
onmouseout     滑鼠從某元素移開。
onmouseover    滑鼠移到某元素之上。
onmouseleave   滑鼠從元素離開

onselect       文本被選中。
onsubmit       確認按鈕被點擊

2.綁定事件的方式:

方式一

<!--綁定事件的方式一-->
<div onclick="foo(this)">div</div>
<div class="c1">div2</div>
<script>
    function foo(self) {
        console.log(self); //<div onclick="foo(this)" style="color: red;">
        self.style.color = 'red';
    }

方式二

//方式二
//    事件的綁定方式2:標簽對象.on事件 = function (){}
     var ele=document.getElementsByClassName("c1")[0];
     ele.onclick=function () {
        console.log(this); // this 代指: 當前觸發時間的標簽對象;
        this.style.fontSize="30px"
    };              

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 項目迭代開發的過程中,有用戶反映保存圖片到相冊崩潰,最終自己測試出,在iOS11以下的手機正常保存,而iOS11之後的手機則會出現反映的問題.列印錯誤信息如下: Google翻譯: 此應用程式已崩潰,因為它嘗試訪問隱私敏感數據,而無需使用說明。應用程式的Info.plist必須包含一個NSPhoto ...
  • 在OC中,字元串、數組、字典是最常見的對象類型,但是在這三個當中,字典的用法相對較少,因為字典的屬性和方法比較少,但是一個字典的用法比較複雜,因為在一個字典當中,既可以包含字元串,也可以包含數組,數組裡面的值是有序的,字典裡面的鍵值對是沒有序的,所以字典的使用往往和其他對象類型的使用混雜在一起,熟練 ...
  • 有話要說: 本篇主要總結了簡單的Android與js互相調用的方法。 在開發過程中遇到了需要在安卓中調用js方法的需求,於是將具體的實現過程總結成這篇博客。 效果: 其中“調用安卓方法”按鈕是html中的按鈕;“調用JS方法”按鈕是app中的按鈕。 本地HTML: 首先,在app根目錄新建一個ass ...
  • 函數是JavaScript中很重要的一個語言元素,並且提供了一個function關鍵字和內置對象Function,下麵是其可能的用法和它們之間的關係。 function使用方式 最普通的function使用方式,定一個JavaScript函數。兩種寫法表現出來的運行效果完全相同,唯一的卻別是後一種寫 ...
  • 我們在WEB開發時,很多時候往往需要我們 JavaScript 來動態建立 html 元素,動態的設置相關的屬性。比方說我們想要建立一個 div 層,則可以使用以下代碼實現。 一.直接建立function Button1_onclick() //直接採用代碼建立一個DIV{ var newEleme ...
  • 關於彈性佈局: display:flex;很好用,將元素放在一排,盒子可用寬度百分比,可替代浮動,雖然浮動也能做到,但是還要清除浮動,多此一舉,還可以實現居中等佈局效果,但有相容性問題,特別是justify-content:space-between,除了新版chrom瀏覽器,其它瀏覽器都不相容,具 ...
  • 1 前言 項目需要用nodejs伺服器給前端傳遞圖片,網上找了好多資料,多數都是怎麼在前端上傳圖片的,然後通過看runoob.com菜鳥教程,發現其實是非常簡單,用express框架就行了。 2 代碼 2.1 用原生的版本(包含了返回網頁功能) ? 1 2 3 4 5 6 7 8 9 10 11 1 ...
  • js中的4種函數調用模式 javascript一共有4種調用模式:函數調用模式、方法調用模式、構造器調用模式和間接調用模式。 【1】函數調用模式 當一個函數並非一個對象的屬性時,那麼它就是被當做一個函數來調用的。對於普通的函數調用來說,函數的返回值就是調用表達式的值 使用函數調用模式調用函數時,非嚴 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...