JS的事件

JS事件

努力不一定成功,不努力肯定不能成功 ---forever

  • onClick 單擊事件
  • onMouseOver 鼠標(biāo)經(jīng)過事件
  • onMouseOut 鼠標(biāo)移出事件
  • onChange 文本內(nèi)容改變事件
  • onSelect 文本框選中事件
  • onFocus 光標(biāo)聚集事件
  • onBlur 移開光標(biāo)事件
  • onLoad 網(wǎng)頁加載事件
  • onUnload 關(guān)閉網(wǎng)頁事件

事件流

  • 事件流 :
    描述的是在頁面中接受事件的順序
  • 事件冒泡 :
    由最具體的元素接收,然后逐級向上傳播至最不具體的元素的節(jié)點(diǎn)(文檔)
  • 事件捕獲 :
    最不具體的節(jié)點(diǎn)先接收事件,而最具體的節(jié)點(diǎn)應(yīng)該是最后接收事件

事件處理

  • HTML事件處理:
    直接添加到HTML結(jié)構(gòu)中
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <button id="btn" onclick="sayBye()">按鈕</button>
    <script>
        function sayBye() {
            alert("bye");
        }
    </script>
</body>
</html>
  • DOMO級事件處理:
    把一個(gè)函數(shù)賦值給一個(gè)事件處理程序?qū)傩?/li>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <button id="btn" onclick="sayBye()">按鈕</button>
    <script>
        var btn = document.getElementById("btn");
        btn.onclick = function sayBye() {
            alert("bye");
        };
    </script>
</body>
</html>
  • DOM2級事件處理
    • addEventListener("事件名", "事件處理函數(shù)", "布爾值");
    • true:事件捕獲
    • false:事件冒泡
    • removeEventListener();
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <button id="btn" onclick="sayBye()">按鈕</button>
    <script>
        var btn = document.getElementById("btn");
        btn.addEventListener("click", eat);
        btn.addEventListener("click", play);
        function eat() {
            alert("DOM2級事件處理吃事件!")
        }
        function play() {
            alert("DOM2級事件處理玩事件")
        }
        btn.removeEventListener("click", eat);
    </script>
</body>
</html>
  • IE事件處理程序
    • attachEvent
    • detachEvent
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <button id="btn" onclick="sayBye()">按鈕</button>
    <!--適配瀏覽器-->
    <script>
        var btn = document.getElementById("btn");
        if (btn.addEventListener) {
            btn.addEventListener("click", demo)
        } else if (btn.attachEvent) {
            btn.attachEvent("click", demo);
        } else {
            btn.onclick = demo();
        }

        function demo() {
            alert("你是我的女神!");
        }
    </script>
</body>
</html>

總結(jié):優(yōu)缺點(diǎn)

  • HTML事件處理:比較繁瑣,修改好多地方
  • 0級處理:能被覆蓋掉
  • 在開發(fā)中一般使用2級響應(yīng)事件,靈活性強(qiáng)

事件對象

  • 事件對象: 在觸發(fā)DOM事件的時(shí)候都會(huì)產(chǎn)生一個(gè)對象
  • 事件對象event
    1. type:獲取事件類型
    2. target:獲取事件目標(biāo)
    3. stopPropagation():阻止事件冒泡
    4. preventDefault():阻止事件默認(rèn)行為
    <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <button id="btn" onclick="sayBye()">按鈕</button>
    <script>
        document.getElementById("btn").addEventListener("click", showType);
        function showType(event) {
            alert(event.type);
        }
    </script>
</body>
</html>
  • preventDefault():阻止事件默認(rèn)行為
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="div">
    <button id="btn" onclick="sayBye()">按鈕</button>
    <a  id="aID">百度一下</a>
        <script>
            document.getElementById("btn").addEventListener("click", showType);
            document.getElementById("div").addEventListener("click", showEvent);
            document.getElementById("aID").addEventListener("click", showDetail);
            function showType(event) {
                alert(event.type);
                alert(event.target);
                event.stopPropagation(); // 阻止冒泡
            }
            function showEvent() {
                alert(div);
            }
    
            function showDetail() {
                event.stopPropagation();
                event.preventDefault(); // 阻止事件默認(rèn)行為
            }
        </script>
    </div>
</body>
</html>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 事件就是用戶或?yàn)g覽器自身執(zhí)行的某種動(dòng)作。比如說 click,mouseover,都是事件的名字。而相應(yīng)某個(gè)事件的函...
    落花的季節(jié)閱讀 315評論 1 1
  • JavaScript 程序采用了異步事件驅(qū)動(dòng)編程模型。在這種程序設(shè)計(jì)風(fēng)格下,當(dāng)文檔、瀏覽器、元素或與之相關(guān)的對象發(fā)...
    劼哥stone閱讀 1,333評論 3 11
  • Node核心思想:1.異步非阻塞;2.單線程;3.事件驅(qū)動(dòng); 在目前的web應(yīng)用中,客戶端和服務(wù)器端之間有些交互可...
    七寸知架構(gòu)閱讀 1,193評論 0 52
  • 我是一個(gè)感性的人,也是一個(gè)感性的老師。 晚自習(xí)又一次在班上哽咽了。記得第一學(xué)期也發(fā)生過一次,那是因?yàn)楹?..
    如面閱讀 739評論 6 5
  • ⑴黃芪果粒茶 材料(一天份):黃芪一錢、果粒茶一大匙、檸檬四分之一個(gè)、楊桃半個(gè)、適量冰糖。 作法:將檸檬及楊桃切片...
    小寶藏的secret閱讀 351評論 0 1

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