1. 程式人生 > 其它 >團隊名稱-衝刺日誌(第七天)

團隊名稱-衝刺日誌(第七天)

事件概述

HTML 事件的例子:

  • 當用戶點選滑鼠時
  • 當網頁已載入時
  • 當圖片已載入時
  • 當滑鼠移動到元素上時
  • 當輸入欄位被改變時
  • 當 HTML 表單被提交時
  • 當用戶觸發按鍵時

JavaScript 使我們有能力建立動態頁面,而事件是可以被 JavaScript 偵測到的行為。

簡單理解: 觸發--- 響應機制。

網頁中的每個元素都可以產生某些可以觸發 JavaScript 的事件,例如,我們可以在使用者點選某按鈕時產生一個事件,然後去執行某些操作。

事件三要素

  1. 事件源 (誰)

  2. 事件型別 (什麼事件)

  3. 事件處理程式 (做啥)

事件執行過程

  1. 獲取事件源(按鈕)
  2. 註冊事件(繫結事件)
  3. 新增事件處理程式

常用事件型別

滑鼠事件

屬性 描述 DOM
onclick 當用戶點選某個物件時呼叫的事件控制代碼。 2
oncontextmenu 在使用者點選滑鼠右鍵開啟上下文選單時觸發
ondblclick 當用戶雙擊某個物件時呼叫的事件控制代碼。 2
onmousedown 滑鼠按鈕被按下。 2
onmouseenter 當滑鼠指標移動到元素上時觸發。 2
onmouseleave 當滑鼠指標移出元素時觸發 2
onmousemove 滑鼠被移動。 2
onmouseover 滑鼠移到某元素之上。 2
onmouseout 滑鼠從某元素移開。 2
onmouseup 滑鼠按鍵被鬆開。

鍵盤事件

屬性 描述 DOM
onkeydown 某個鍵盤按鍵被按下。 2
onkeypress 某個鍵盤按鍵被按下並鬆開。 2
onkeyup 某個鍵盤按鍵被鬆開。

表單事件

屬性 描述 DOM
onblur 元素失去焦點時觸發 2
onchange 該事件在表單元素的內容改變時觸發( <input>, <keygen>, <select>, 和 <textarea>) 2
onfocus 元素獲取焦點時觸發 2
onfocusin 元素即將獲取焦點時觸發 2
onfocusout 元素即將失去焦點時觸發 2
oninput 元素獲取使用者輸入時觸發 3
onreset 表單重置時觸發 2
onsearch 使用者向搜尋域輸入文字時觸發 ( <input="search">)
onselect 使用者選取文字時觸發 ( <input> 和 <textarea>) 2
onsubmit 表單提交時觸發

事件處理

更改元素內容

element.innerText

從起始位置到終止位置的內容, 但它去除 html 標籤, 同時空格和換行也會去掉

element.innerHTML

起始位置到終止位置的全部內容,包括 html 標籤,同時保留空格和換行

操作元素屬性

  • innerText、innerHTML 改變元素內容

  • src、href

  • id、alt、title

表單元素的屬性操作

type、value、checked、selected、disabled

樣式屬性操作

我們可以通過 JS 修改元素的大小、顏色、位置等樣式。

element.style  //行內樣式操

element.className
<!--element.style-->
<head>
	<style>
        div {
            width: 200px;
            height: 200px;
            background-color: pink;
        }
    </style>
</head>

<body>
    <div></div>
    <script>
        // 1. 獲取元素
        var div = document.querySelector('div');
        // 2. 註冊事件 處理程式
        div.onclick = function() {
            // div.style裡面的屬性 採取駝峰命名法 
            //this表示當前物件,即div
            this.style.backgroundColor = 'purple';
            this.style.width = '250px';
            //box.style.display = 'none'
        }
    </script>
</body>

注意:

  • JS 裡面的樣式採取駝峰命名法 比如 fontSize、 backgroundColor
  • JS 修改 style 樣式操作,產生的是行內樣式,CSS 權重比較高
<!--element.className-->
<head>
    <style>
        .first {
            width: 200px;
            height: 200px;
            background-color: pink;
        }

        .change {
            background-color: red;
        }

    </style>
</head>
<body>
    <div class="first">123</div>
    <input type="button" id="btn"></input>
    <script>
        let btn = document.getElementById('btn');
        let box = document.querySelector('.first')
        btn.onclick = function () {
            box.className = 'change'
            
              //若想同時包含多個樣式
            box.className = 'change first'
        }
    </script>
</body>

案例

登入框顯示/隱藏密碼

<div id="box">
    <input type="password" id="pwd">
    <img src="images/close.png">
</div>
<script>
    //獲取事件源
let input = document.getElementById('pwd');
let img = document.querySelector('img');

//註冊事件:點選事件
//新增事件處理程式:1.切換輸入框型別 2.切換圖片
let flag = 0
img.onclick = function () {
    if(flag == 0){
        input.type = 'text'
        img.src = 'images/open.png'
        flag = 1
    } else {
        if(flag == 1){
            input.type = 'password'
            img.src = 'images/close.png'
            flag = 0
        }
    }
}
</script>
<style>  	
	#box {
            margin: 100px auto;
            position: relative;
            width: 400px;
            border-bottom: 1px solid #ccc ;
        }

        div input {
            width: 370px;
            height: 30px;
            border: 0;
            outline: none;
        }
        img {
            position: absolute;
            top: 2px;
            right: 2px;
            width: 24px;
        }
    </style>