国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

JavaScript 入門指南(三)BOM 對象和 DOM 對象

這篇具有很好參考價值的文章主要介紹了JavaScript 入門指南(三)BOM 對象和 DOM 對象。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

BOM 對象

BOM 簡介

  • BOM(browser Object Model)即瀏覽器對象模型
  • BOM 由一系列對象組成,是訪問、控制、修改瀏覽器的屬性的方法
  • BOM 沒有統(tǒng)一的標準(每種客戶端都可以自定標準)。
  • BOM 的頂層是 window 對象

window 對象

window 對象表示瀏覽器中打開的窗口。

使用 window 對象中的屬性和方法,可以省略對象名,直接寫方法名和對象名

  • 屬性

    • location :當前 URL 的信息
    • history :客戶訪問過的 URL 的信息
    • screen :客戶端的屏幕信息
    • navigator :瀏覽器基本信息
    • document :文檔對象
  • 函數(shù)

    彈框

    // 提示框(顯示帶有一段消息和一個確認按鈕的警告框)
    alert(提示信息);
    // 確認框(顯示帶有一段消息以及確認按鈕和取消按鈕的對話框)。點擊確定,返回true;點擊取消,返回false
    confirm(提示信息);
    // 輸入框(顯示可提示用戶輸入的對話框)。點擊確定,返回輸入的內(nèi)容;點擊取消,返回null
    prompt(提示信息);
    

    瀏覽器窗口

    // 打開一個新的瀏覽器窗口或查找一個已命名的窗口
    open(網(wǎng)址)
    // 關(guān)閉瀏覽器窗口
    close()
    

    定時器

    // 執(zhí)行一次的定時器
    setTimeout(函數(shù), 毫秒值); 
    // 反復(fù)執(zhí)行的定時器
    setInterval(函數(shù), 毫秒值); 
    // 參數(shù):
    //    函數(shù):定義一個有名函數(shù),傳遞函數(shù)名字,或者使用匿名函數(shù)
    //    毫秒值:設(shè)置定時器的時間,在指定的時間結(jié)束之后,會執(zhí)行傳遞的函數(shù)
    //    返回值:返回的是定時器的 id 值,可以用于取消定時器使用
    
    // 取消執(zhí)行一次的定時器
    clearTimeout(定時器的id值);
    // 取消反復(fù)執(zhí)行的定時器
    clearInterval(定時器的id值);
    

    示例:文章來源地址http://www.zghlxwxcb.cn/news/detail-845873.html

    var timeId = setTimeout(function () {
        alert("c4爆炸了!");
    }, 5000);
    //alert(timeId);	// 2
    
    function butOnclick() {
        // 取消執(zhí)行一次的定時器
        cl
    }
    

location 對象

Location 對象包含有關(guān)當前 URL(瀏覽器的地址)的信息。

  • 屬性:

    • href :獲取當前瀏覽器的url地址

      href = “新的url地址” : 跳轉(zhuǎn)頁面,相當于在瀏覽器地址欄中輸入了地址,并且敲擊回車(打開頁面)

    • hostname :主機名

    • port :端口名
    • host :主機名+端口名
  • 方法

    • reload() :重新加載當前文檔。 刷新頁面

web 存儲

  • HTML5 為 JS 增加了兩個可以存儲數(shù)據(jù)的對象

    • localStorage :本地存儲,永久存儲數(shù)據(jù),作用域:所有頁面永久訪問
    • sessionStorage :會話存儲,臨時存儲數(shù)據(jù),作用域:一次會話(連續(xù)跳轉(zhuǎn)的幾個頁面)
  • 不管是 localStorage,還是 sessionStorage,可使用的 API 都相同

    常用函數(shù)(以 localStorage 為例):

    • setItem(key, value) :存儲一個數(shù)據(jù)
    • getItem(key) :獲取一個數(shù)據(jù)
    • removeItem(key) :刪除一個數(shù)據(jù)
    • clear() :清除所有數(shù)據(jù)

history 對象

History 對象包含用戶(在瀏覽器窗口中)訪問過的 URL。

History 對象是 window 對象的一部分,可通過 window.history 屬性對其進行訪問。

函數(shù)

  • back() :后退到前一個頁面(加載 history 列表中的前一個 URL)
  • forward() :前進到后一個頁面(加載 history 列表中的下一個 URL)
  • go(n) :直接前進到第 n 個頁面
  • go(-n) :直接后退到第 n 個頁面
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>history對象</title>
    <script>
        //創(chuàng)建鼠標點擊事件的響應(yīng)函數(shù)
        function goBack() {
            window.history.back();
        }
        function goForward() {
            window.history.forward();
        }
    </script>
</head>
<body>
    <input type="button" value="上一步" onclick="goBack()"/>
    <input type="button" value="下一步" onclick="goForward()"/>
    <a href="04_history對象.html">跳轉(zhuǎn)到04_history對象.html</a>
</body>
</html>

screen 對象

Screen 對象包含有關(guān)客戶端顯示屏幕的信息。

screen 對象中的屬性,可以通過 screen.屬性名 直接使用

屬性

  • height :返回顯示屏幕的高度(像素)
  • width :返回顯示器屏幕的寬度(像素)

navigator 對象

navigator 對象包含有關(guān)瀏覽器的信息。

navigator 對象中的屬性,可以通過 navigator.屬性名 直接使用

屬性

  • appName :返回瀏覽器的名稱
  • appVersion :返回瀏覽器的平臺和版本信息
  • userAgent :瀏覽器類型

超鏈接與表單的跳轉(zhuǎn)控制

  • 超鏈接和表單都可以進行跳轉(zhuǎn)。跳轉(zhuǎn)屬于它們的默認功能。

  • 一般在它們觸發(fā)的一個事件中,可以通過返回 false,來阻止他們的跳轉(zhuǎn)!

    <br />function fun5(){
        alert('超鏈接被點擊了!');
        return false;
    }
    
    function f() {
        alert("阻止表單提交");
        return false;
    }
    
    <a href="https://www.baidu.com" onclick="return fun5()">超鏈接</a>
    //阻止提交
    <a href="javascript:void(0)">我是超鏈接</a>
    
    <form action="http://www.baidu.com" onsubmit="return f()">
        <input type="submit">
    </form>
    

DOM 對象

DOM 是 document object model,也就是文檔對象模型。

可以將 HTML 頁面看做一個文檔,在 js 眼中就是一個 document 對象。

這個 document 對象中就包含了頁面中的所有元素。

DOM 中的節(jié)點分類:

  • 元素節(jié)點(element node)
  • 屬性節(jié)點(attribute node)
  • 文本節(jié)點(text node)

外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳


dom 獲取元素

  • 方式1:es6 提供了強大的根據(jù) CSS 選擇器獲取元素的接口(推薦)

    // 根據(jù)css選擇器獲取一個元素
    document.querySelector(CSS選擇器)
    // 根據(jù)css選擇器獲取元素對象數(shù)組集合
    document.querySelectorAll(CSS選擇器)
    
  • 方式2:es5 提供的獲取元素的接口

    // 根據(jù) id 獲取一個元素:
    document.getElementById(ID)  	// 等價于es6的 querySelector(#ID)
    // 根據(jù) class 獲取多個元素:
    document.getElementsByClassName(class)	   // 等價于es6的 querySelectorAll(.class)
    // 根據(jù)標簽名稱獲取多個元素:
    document.getElementsByTagName(標簽名稱)		// 等價于es6的 querySelectorAll(標簽)
    // 根據(jù) name 屬性獲取多個元素:
    document.getElementsByName('name值') 	  // 等價于es6的 querySelectorAll(元素名稱[name=name值])
    
  • 小總結(jié):

    • es6 接口獲取元素功能非常強大,而且接口非常易用
    • es5 接口功能非常局限,而且接口使用復(fù)雜

間接根據(jù)層次關(guān)系獲取節(jié)點:

  • 父節(jié)點:parentNode:表示該元素的父節(jié)點
  • 孩子節(jié)點:
    • childNodes:表示該元素的所有子節(jié)點的集合,數(shù)組對象
    • firstElementChild:第一個兒子節(jié)點
    • lastElementChild:最后一個兒子節(jié)點
  • 兄弟節(jié)點:
    • nextElementSibling:該元素后一個兄弟元素節(jié)點
    • previousElementSibling:該元素前一個兄弟元素節(jié)點

dom 操作內(nèi)容

  • 常用函數(shù)

    // 向body中追加html內(nèi)容
    document.write(html內(nèi)容) 
    // 獲取或者修改元素的純文本內(nèi)容(從元素內(nèi)部起始位置到終止位置的文本內(nèi)容, 不包含內(nèi)部的Html標簽)
    element對象.innerText; 
    // 獲取或者修改元素的html內(nèi)容(從元素內(nèi)部的起始位置到終止位置的全部內(nèi)容, 包括其內(nèi)部的Html標簽)
    element對象.innerHTML; 
    // 獲取或者修改包含自身的html內(nèi)容
    element對象.outerHTML; 
    
  • 示例

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>dom操作內(nèi)容</title>
    </head>
    <body>
    <div id="d1">我是d1<br/></div>
    <div id="d2">我是d2</div>
    <div id="d3">我是d3</div>
    <script>
        // 向body中追加html內(nèi)容
        document.write("<h1>我是h1標題標簽</h1>");
    
        // 獲取元素的純文本,html內(nèi)容對比
        var d1Ele = document.querySelector("#d1");	// 獲取id是d1的元素 <div id="d1">我是d1<br/></div>
        console.log(d1Ele.innerText);	//我是d1  ==>標簽中的文本
        console.log(d1Ele.innerHTML);	//我是d1<br>  ==>標簽體
        console.log(d1Ele.outerHTML);	//<div id="d1">我是d1<br></div>  ==>整個標簽
    
        // 修改元素的純文本,html內(nèi)容對比
        var d2Ele = document.querySelector("#d2");		 //獲取id是d2的元素 <div id="d2">我是d2</div>
        //d2Ele.innerText = "<h2>我是h2標簽體標簽</h2>";	//顯示純文本
        d2Ele.innerHTML = "<h2>我是h2標簽體標簽</h2>";		//顯示標簽
    
        // 獲取或修改包含元素自身的html內(nèi)容(了解)
        var d3Ele = document.querySelector("#d3");		//獲取id是d3的元素 <div id="d3">我是d3</div>
        console.log(d3Ele.outerHTML);					//<div id="d3">我是d3</div>
        d3Ele.outerHTML = "<h3>我是h3標簽體標簽</h3>";		//把d3的div整個替換為了h3標簽
    </script>
    </body>
    </html>
    

dom 操作屬性

  • 方法1:

    // 獲取元素的一個屬性的值。注意:只能獲取標簽上屬性的值,獲取不用用戶輸入的內(nèi)容
    element對象.getAttribute(屬性名)
    // 給元素設(shè)置一個屬性,可以設(shè)置原生和自定義
    element對象.setAttribute(屬性名, 屬性值)
    // 移除元素的一個屬性
    element對象.removeAttribute(屬性名) 
    
  • 方法2:

    // 獲取或修改一個屬性的值
    element對象.屬性名
    
  • 注:

    • 方法1 可以對自定義屬性進行操作;但是 方法2 只能對標準屬性進行操作。
    • 文本輸入框標簽:通過對象名.value 屬性,可以獲取到頁面中用戶輸入的內(nèi)容。
    • 復(fù)選框|單選框標簽:
      • 通過 對象名.checked 屬性可以獲取到選中狀態(tài)。選中:true;未選中:false
      • 通過 對象名.getAttribute() 函數(shù)獲取屬性值:有 checked 屬性,值就是 checked;沒有 checked 屬性,值就是 null

dom 操作元素

  • 常用方法

    // 獲取或者設(shè)置標簽的html內(nèi)容
    element對象.innerHTML
    // 移除元素
    element對象.outerHTML=""
    
    // 創(chuàng)造一個節(jié)點,返回一個element對象
    document.createElement("標簽名稱)
    // 給父標簽添加一個子標簽
    parentElement對象.appendChild(newNode) 
    // 在指定節(jié)點前插入新節(jié)點
    parentElement對象.insertBefore(newNode,beforeNode)
    // 替換節(jié)點的方法 
    parentElement對象.replaceChild(newNode, oldNode)
    // 刪除節(jié)點的方法
    parentElement對象.removeChild(childNode)
    
  • 示例:

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>dom操作元素</title>
    </head>
    <body>
    <div id="container">
        <input id="smoke" type="checkbox" name="hobby" value="抽煙">
        <label for="smoke">抽煙&emsp;</label>
    <!--    <input id="drink" type="checkbox" name="hobby" value="喝酒">-->
    <!--    <label for="drink">喝酒&emsp;</label>-->
    <!--    <input id="perm" type="checkbox" name="hobby" value="燙頭">-->
    <!--    <label for="perm">燙頭&emsp;</label>-->
    </div>
    <script >
        //獲取div標簽對象
        var divEle = document.querySelector("#container");
    
        // 添加喝酒 innerHTML
        console.log(divEle.innerHTML);
        divEle.innerHTML += "<input id='drink' type='checkbox' name='hobby' value='喝酒'>"
            + "<label for='drink'>喝酒&emsp;</label>";
        
        // 添加燙頭
        // 創(chuàng)建input標簽,使用document對象中方法createElement("標簽名稱")
        var inputEle = document.createElement("input");
        console.log(inputEle);			//<input>
        // <input id="perm" type="checkbox" name="hobby" value="燙頭">
        inputEle.setAttribute("id","perm");
        console.log(inputEle);			//<input id="perm">
        inputEle.setAttribute("type","checkbox");
        inputEle.setAttribute("name","hobby");
        inputEle.setAttribute("value","燙頭");
        console.log(inputEle);			//<input type="checkbox" id="perm" name="hobby" value="燙頭">
    
        // <label for="perm">燙頭&emsp;</label>
        // 創(chuàng)建標簽
        var lableEle = document.createElement("lable");
        // 添加屬性
        lableEle.setAttribute("for","perm");
        console.log(lableEle);			//<lable for="perm">
        // 添加標簽體
        lableEle.innerHTML="燙頭&emsp;";
        console.log(lableEle);			//<label for="perm">燙頭&emsp;</label>
    
        // 使用父標簽div中的方法appendChild(子標簽);添加子標簽
        divEle.appendChild(inputEle);
        divEle.appendChild(lableEle);
    
        // 移除元素(了解) outerHTML
        //lableEle.outerHTML = "";			//刪除label標簽
    </script>
    </body>
    </html>
    

dom 操作樣式

  • 通過 style 對象

    // 獲取或者修改一個樣式
    element對象.style.css樣式
    // 設(shè)置多個css樣式
    element對象.style.cssText = "樣式鍵值對;樣式鍵值對..."
    

    注意:

    • style 對象,只能獲取行內(nèi)樣式(寫在一行中),不能獲取內(nèi)嵌的樣式(寫在 head 的 style 中)和外鏈的樣式(寫在css文件中)

    • style 是對象。typeof 的結(jié)果是 Object

    • 值是字符串,沒有設(shè)置值是空字符串""

    • 命名規(guī)則:駝峰命名

    • DOM 中的 style 對象并不等同 html 標簽中 style 屬性,在 JS 中,橫杠 - 是不能作為標識符的

      比如:背景色樣式在 DOM 中是 backgroundColor,而在 CSS 中是 background-color

    style 對象的常用屬性:backgroundColor(背景色)、backgroundImage(背景圖片)、color(顏色)、width(寬像素)、height(高像素)、border(邊框)、opacity(設(shè)置透明度,IE8 以前是 filter: alpha(opacity=xx))

  • 通過 className 屬性

    節(jié)點的 className 屬性對應(yīng)于 css 中的類選擇器

    // 獲取或者修改class屬性值(樣式)
    element對象.className 
    // 獲取class屬性值集合,返回一個classList對象(es6特別提供的操作元素class的接口)
    element對象.classList
    

    element.classList 的常用方法:

    add("class樣式名稱")  		// 添加一個class樣式
    remove("class樣式名稱") 	// 移除一個class樣式
    contains("class樣式名稱") 	// 判斷是否包含某一個樣式,包含返回true,不包含返回false
    toggle("class樣式名稱") 	// 切換一個class樣式。有則刪除,無則添加
    
  • 添加事件:通過對象名.事件屬性名 給元素添加事件

  • 示例:

    <!DOCTYPE html>
    <html lang="zh">
    <head>
        <meta charset="UTF-8">
        <title>dom操作樣式</title>
    </head>
    <body>
    <style>
        #p1{background-color: red}
        .mp{color:green}
        .mpp{background-color: lightgray;}
    </style>
    <p id="p1">1. 設(shè)置一個css樣式</p>
    <p id="p2">2. 批量設(shè)置css樣式</p>
    <p id="p3" class="mpp">3. 通過class設(shè)置樣式</p>
    <p id="p4">4. 切換class樣式</p>
    <input type="button" value="切換樣式" id="b1" />
    
    <script >
        let p1 = document.querySelector("#p1");		//獲取段落標簽
        let p2 = document.querySelector("#p2");		//獲取段落標簽
        let p3 = document.querySelector("#p3");		//獲取段落標簽
        let p4 = document.querySelector("#p4");		//獲取段落標簽
    
        // 內(nèi)嵌式的樣式,通過style對象獲取不了
        console.log("p1 backgroundColor: " + p1.style.backgroundColor);	//""
        // 給p1設(shè)置css樣式
        // 白色字體
        p1.style.color = "white";
        // 黑色背景
        p1.style.backgroundColor = "black";
        // 獲取p1的樣式名
        console.log(p1.style.backgroundColor);	//black
        console.log(p1.style.color);			//white
        // 隱藏不顯示
        //p1.style.display = "none";
        // 顯示
        //p1.style.display = "block";
    
        // 給p2批量設(shè)置css樣式
        p2.style.cssText = "color: red;font-family: '楷體';border: 1px solid green";
    
        // 給p3通過class設(shè)置樣式
        // a.給元素添加class屬性的方式添加樣式
        //p3.setAttribute("class","mp mpp");
        // b.使用className屬性添加(兩種方式)
        //p3.className= "mp mpp";
        p3.className = p3.className + " mp";	// mpp + " mp"==>mpp mp
        console.log("p3 className: " + p3.className);//mp mpp
    
        // 切換class樣式
        // 獲取p4的class樣式集合
        var p4List = p4.classList;
        // 添加一個class樣式
        p4List.add("mpp");
        // 判斷某一個樣式是否存在
        console.log(p4List.contains("mpp"));	//true
        console.log(p4List.contains("mp"));		//false
        // 添加一個class樣式
        p4List.add("mp");
        console.log(p4List);
        // 移除一個class樣式
        p4List.remove("mp");
    
        // 獲取id是b1的按鈕
        var b1Ele = document.querySelector("#b1");
        // 通過對象名.事件屬性名,給元素添加事件
        b1Ele.onclick = function () {
            //切換,無則添加,有則刪除
            p4List.toggle("mp");
        }
    </script>
    </body>
    </html>
    

到了這里,關(guān)于JavaScript 入門指南(三)BOM 對象和 DOM 對象的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包