JavaScript進(jìn)階

一.JS中的DOM

1.DOM的概述

DOM是Document Object Model 文檔對(duì)象模型的縮寫(xiě)

HTML DOM是將HTML文檔表達(dá)為樹(shù)狀結(jié)構(gòu),定義了訪問(wèn)和操作HTML文檔的標(biāo)準(zhǔn)方法:DOM樹(shù):節(jié)點(diǎn)的層次,文檔節(jié)點(diǎn),元素節(jié)點(diǎn),屬性節(jié)點(diǎn),文本節(jié)點(diǎn);DOM把一個(gè)文檔表示為一顆家譜樹(shù)(父,子,兄弟);

2.獲取元素的三種方式

  1. 通過(guò)元素 Id getElementById,返回?fù)碛兄付?id 的第一個(gè)元素,如果不存在則返回 null
  2. 通過(guò)標(biāo)簽名字 getElementsByTagName,返回一個(gè)包括所有給定標(biāo)簽名稱的元素集合,如果沒(méi)有 匹配的元素,返回一個(gè)空集。
  3. 通過(guò) class 名字 getElementsByClassName,返回一個(gè)包含所有指定class名稱的元素集合,可以 在任意元素上調(diào)用該方法
  4. 通過(guò) name 名字 getElementsByName,返回一個(gè)包含所有指定name名稱的元素集合,可以 在任意元素上調(diào)用該方法

案例

<script>
        window.onload = function () {
            //獲取元素對(duì)象
            //1通過(guò)id的方式來(lái)獲取唯一的標(biāo)簽對(duì)象
            let div1E1 = document.getElementById("div1Id");
            console.log(div1E1);
            //2 通過(guò)標(biāo)簽名稱來(lái)獲取所有的標(biāo)簽對(duì)象
            let divEls = document.getElementsByTagName("div");
            console.log(divEls);
            //3通過(guò)標(biāo)簽上的Class屬性來(lái)獲取多個(gè)標(biāo)簽對(duì)象
            let clzEls = document.getElementsByClassName("div");
            console.log(clzEls);
        }
    </script>

3.如何操作元素對(duì)象的屬性

  • 操作標(biāo)準(zhǔn)屬性

    獲取屬性值 : 元素對(duì)象[“屬性名”]

                       **元素對(duì)象.屬性名** 
    
                      **元素對(duì)象.getAttribute("屬性名")** 
    
  • 設(shè)置屬性值: 元素對(duì)象[”屬性名”] = 值

                      **元素對(duì)象.屬性名 = 值** 
    
                      **元素對(duì)象.setAttribute("屬性名", 值)** 
    
  • 操作自定義屬性

    獲取屬性值: 元素對(duì)象.getAttribute("屬性名")

    設(shè)置屬性值: 元素對(duì)象.setAttribute("屬性名", 值)

案例

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        window.onload = function () {
            //1 獲取元素對(duì)象
            let divE1 = document.getElementById("divId");
            //2 操作屬性
            //2.1 標(biāo)準(zhǔn)自帶屬性的操作
            
        //2.1.1 普通的標(biāo)準(zhǔn)自帶屬性的操作
            console.log(divE1["id"], divE1.id, divE1.getAttribute("id"));
            divE1["id"] = "newDivId1";
            divE1.id = "newDivId2";
            divE1.setAttribute("id", "newDivId3");
            
        //2.1.2 特殊的的標(biāo)準(zhǔn)自帶屬性的操作
            console.log(divE1["className"], divE1.className, divE1.getAttribute("class"));
            divE1["className"] = "newClz1";
            divE1.className = "newClz2";
            divE1.setAttribute("class", "newClz3");
            console.log(divE1["className"], divE1.className, divE1.getAttribute("class"));
           
        //帶特殊符號(hào)
            console.log(divE1["style"]);
            console.log(divE1.style);
            //console.log(divE1.getAttribute("style"));不推薦因?yàn)榉祷氐氖亲址皇菍?duì)象,不方便使用
            console.log(divE1["style"]["background-color"], divE1.style.backgroundColor);//backgroundColor是別名
            divE1["style"]["background-color"] = "green";
            divE1.style.backgroundColor = "red";
            
        //2.2 自定義屬性的操作,只能使用getter和setter方法獲取
            console.log(divE1["oo"], divE1.oo, divE1.getAttribute("oo"));
            divE1.setAttribute("oo", "newXX")
            console.log(divE1.getAttribute("oo"));
           
        //2.3 特殊屬性操作 key=value 的屬性(checked="checked",selected="selected")
            // 關(guān)注是有沒(méi)有,值是true和false
            let inputE1 = document.getElementById("inputId");
            console.log(inputE1.checked);
            inputE1.checked = true;
            //inputE1.checked=false;
            //inputE1.setAttribute("checked","false")
            // 如果是字符串通過(guò)里面有沒(méi)有值來(lái)判斷是true還是false,所以不使用getset
        }
    </script>
</head>
<body>
<div id="divId" class="clz" style="background-color: pink;height: 100px" oo="xx"></div>
<input id="inputId" type="checkbox"/>
</body>

4.Node對(duì)象的屬性和方法

屬性名 描述
firstChild 指向在子節(jié)點(diǎn)列表中的第一個(gè)節(jié)點(diǎn)
lastChild 指向在子節(jié)點(diǎn)列表中的最后一個(gè)節(jié)點(diǎn)
childNodes 所有子節(jié)點(diǎn)的列表
previousSibling 指向前一個(gè)兄弟節(jié)點(diǎn),如果這個(gè)節(jié)點(diǎn)就是第一個(gè),那么該值為null
nextSibling 指向后一個(gè)兄弟節(jié)點(diǎn),如果這個(gè)節(jié)點(diǎn)就是最后一個(gè),那么該值為null
parentNode 父節(jié)點(diǎn)
document.createElement("元素對(duì)象名") 新建一個(gè)元素對(duì)象
inerText 直接加入文本
innerHTML 可以設(shè)置html 代碼(標(biāo)簽)

事件處理

事件綁定的方式

  • 方式一 在元素上使用屬性綁定

  • 方式二通過(guò)元素對(duì)象的事件屬性綁定( 使用這種方式為元素綁定事件, 一定是要在元素被加載后,然后再執(zhí)行上面的JS代碼)

//方式一  在元素上使用屬性綁定
 <input type="button" value="點(diǎn)我啊" onclick="alert('點(diǎn)我干啥?');"/>

//方式二通過(guò)元素對(duì)象的事件屬性綁定( 使用這種方式為元素綁定事件, 一定是要在元素被加載后,然后再執(zhí)行上面的JS代碼)
       <!--在該元素被加載完的時(shí)候沒(méi)有綁定事件--> <input type="button" value="點(diǎn)我啊" id="btn"/>
     //使用JS代碼為元素綁定事件 
     var btn = document.getElementById("btn");
        btn.onclick = function(){
            alert("點(diǎn)我干啥"); 
        }

常用事件類型

鼠標(biāo)事件

屬性 描述
onclick 當(dāng)用戶點(diǎn)擊某個(gè)對(duì)象時(shí)調(diào)用的事件句柄
ondblclick 當(dāng)用戶雙擊某個(gè)對(duì)象時(shí)調(diào)用的事件句柄
onmousedown 鼠標(biāo)按鈕被按下
onmouseleave 當(dāng)鼠標(biāo)指針移出元素時(shí)觸發(fā)
onmousemove 鼠標(biāo)被移動(dòng)
onmouseover 鼠標(biāo)移到某元素之上
onmouseout 鼠標(biāo)從某元素移開(kāi)
onmouseup 鼠標(biāo)按鍵被松開(kāi)

鍵盤(pán)事件

屬性 描述
onkeydown 某個(gè)鍵盤(pán)按鍵被按下
onkeypress 某個(gè)鍵盤(pán)按鍵被按下并松開(kāi)
onkeyup 某個(gè)鍵盤(pán)按鍵被松開(kāi)

表單事件

屬性 描述
onblur 元素失去焦點(diǎn)時(shí)觸發(fā)
onchange 該事件在表單元素的內(nèi)容改變時(shí)觸發(fā)
onfocus 元素獲取焦點(diǎn)時(shí)觸發(fā)
onsubmit 表單提交時(shí)觸發(fā)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • JavaScript高級(jí) BOM瀏覽器對(duì)象模型 概念:Browser Object Model 瀏覽器對(duì)象模型: ...
    哈哈大圣閱讀 284評(píng)論 0 1
  • 簡(jiǎn)介 ECMAScript是JavaScript的標(biāo)準(zhǔn),JavaScript實(shí)現(xiàn)了ECMAScript,ECMAS...
    Zindex閱讀 589評(píng)論 0 1
  • JS的學(xué)習(xí) 一、JavaScript的簡(jiǎn)介 【1】為什么學(xué)習(xí) JavaScrip 1、html+css 只是可以實(shí)...
    袁小勝閱讀 729評(píng)論 0 0
  • jQuery(write less do more) 優(yōu)點(diǎn) 版本 使用方式 CDN 多庫(kù)共存 入口函數(shù) windo...
    云盡蒼穹閱讀 237評(píng)論 0 1
  • 二十一世紀(jì)舊體詩(shī)詞風(fēng)騷榜[http://www.itdecent.cn/c/da968ae2d498] 上榜絮語(yǔ)...
    張成昱閱讀 1,167評(píng)論 2 24

友情鏈接更多精彩內(nèi)容