JavaScript--DOM事件

JavaScript--DOM事件

事件就是文檔或瀏覽器窗口中發(fā)生的一些特定的交互瞬間俗冻。

一礁叔、HTML事件

語法:<tag 事件=“執(zhí)行腳本”></tag>
功能:在HTML元素上綁定事件。
說明:執(zhí)行腳本可以是一個函數(shù)的調(diào)用迄薄。

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .btn{
            width: 140px;
            height: 30px;
            line-height:30px;
            background:#00f;
            color:#fff;
            font-size: 14px;
            text-align: center;
            border-radius: 10px;
            cursor: pointer;
            margin-top: 30px;
        }
    </style>
</head>
<body>
    <input type="button" value="彈出" onclick="alert('我是按鈕')">

    <!--鼠標(biāo)劃過按鈕時調(diào)用mouseoverFn的函數(shù)-->
    <!--this為該dom對象div的引用:該事件綁在div這個元素上琅关,該this就代表div-->
    <div id="btn" class="btn" onmouseover="mouseoverFn(this)" onmouseout="mouseoutFn(this)">開始</div>
    <!--或者直接把顏色也傳遞過去-->
    <div id="btn2" class="btn" onmouseover="mouseoverFn1(this,'#0f0')" onmouseout="mouseoutFn1(this,'#333')">結(jié)束</div>
    <script>
        function mouseoverFn(btn) {
            //鼠標(biāo)劃過按鈕時,按鈕的背景變?yōu)榧t色
            //console.log(btn);//<div id="btn" class="btn" onmouseover="mouseoverFn(this)">開始</div>
            btn.style.background="#f00";
        }
        function mouseoutFn(btn) {
            btn.style.background="#00f";
        }

        function mouseoverFn1(btn,bgColor) {
            btn.style.background=bgColor;
        }
        function mouseoutFn1(btn,bgColor) {
            btn.style.background=bgColor;
        }
    </script>
</body>

二、DOM0級事件

語法:ele.事件=執(zhí)行腳本
功能:在DOM對象上綁定事件
說明:執(zhí)行腳本可以是一個匿名函數(shù)涣易,也可以是一個函數(shù)的調(diào)用画机。

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .lock{
            width: 140px;
            height: 30px;
            line-height:30px;
            background:#00f;
            color:#fff;
            font-size: 14px;
            text-align: center;
            border-radius: 10px;
            cursor: pointer;
            margin-top: 30px;
        }
        .unlock{
            width: 140px;
            height: 30px;
            line-height:30px;
            background:#666;
            color:#ccc;
            font-size: 14px;
            text-align: center;
            border-radius: 10px;
            cursor: pointer;
            margin-top: 30px;
        }

    </style>
</head>
<body>

    <div id="btn" class="lock" >鎖定</div>

    <script>
        //獲取按鈕
        var btn=document.getElementById("btn");
        //給按鈕綁定事件
        btn.onclick=function(){
            //console.log(this);//<div id="btn" class="lock" >鎖定</div>
            // this.className="unlock";
            // this.innerHTML="解鎖";
            //判斷如果按鈕時鎖定,則顯示為解鎖新症,變?yōu)榛疑?            //否則顯示為鎖定步氏,變?yōu)樗{色
           /* if(this.className=="lock"){
                this.className="unlock";
                this.innerHTML="解鎖";
            }else{
                this.className="lock";
                this.innerHTML="鎖定";
            }*/
           //根據(jù)內(nèi)容來判斷
            if(this.innerHTML=="鎖定"){
                this.className="unlock";
                this.innerHTML="解鎖";
            }else {
                this.className="lock";
                this.innerHTML="鎖定";
            }
        }


        //注意:自定義函數(shù)時的調(diào)用
        function clickBtn(){
            alert("我是按鈕");
        }
        btn.onclick=clickBtn;//此處調(diào)用不能寫()
    </script>
</body>

三、常用的鼠標(biāo)事件與鍵盤事件

1.鼠標(biāo)事件
onload:頁面加載時觸發(fā)
onclick:鼠標(biāo)點擊時觸發(fā)
onmouseover:鼠標(biāo)滑過時觸發(fā)
onmouseout:鼠標(biāo)離開時觸發(fā)
onfoucs:獲得焦點時觸發(fā)
onblur:失去焦點時觸發(fā)
onchange:域的內(nèi)容改變時發(fā)生
onsubmit:表單中的確認(rèn)按鈕被點擊時發(fā)生
onmousedown:鼠標(biāo)按鈕在元素上按下時觸發(fā)
onmousemove:在鼠標(biāo)指針移動時發(fā)生
onmouseup:在元素上松開鼠標(biāo)按鈕時觸發(fā)
onresize:當(dāng)調(diào)整瀏覽器窗口的大小時觸發(fā)
onscroll:拖動滾動條滾動時觸發(fā)

①onload:頁面加載時觸發(fā)

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script>
       // 頁面加載時執(zhí)行徒爹,unload頁面卸載 把頁面中的所有元素加載完畢再觸發(fā)
       window.onload=function(){
         // 獲取box
         var box=document.getElementById("box");
         var clicked=function(){
              alert('我被點擊了');
         }
         box.onclick=clicked;
       }
    </script>
</head>
<body>
    <div id="box">這是一個DIV</div>
</body>

②onfoucs:獲得焦點時觸發(fā) 用于input標(biāo)簽type為text荚醒、password、textarea
③onblur:失去焦點時觸發(fā)

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
       .box{
          padding:50px;
       }
       .left,.tip{
          float:left;
       }
       .left{margin-right:10px;}
       .tip{display:none;font-size:14px;}
    </style>
    <script>
       window.onload=function(){
          // 獲取文本框和提示框
          var phone=document.getElementById("phone"),
              tip=document.getElementById("tip");
          // 給文本框綁定激活的事件
          phone.onfocus=function(){
              // 讓tip顯示出來
              tip.style.display='block';
          }
          // 給文本框綁定失去焦點的事件
          phone.onblur=function(){
             // 獲取文本框的值,value用于獲取表單元素的值
             var phoneVal=this.value;
             // 判斷手機號碼是否是11位的數(shù)字
             // 如果輸入正確隆嗅,則顯示對號圖標(biāo)界阁,否則顯示錯號圖標(biāo)
             if(phoneVal.length==11 && isNaN(phoneVal)==false){
                tip.innerHTML='<img src="img/right.png">';
             }else{
                tip.innerHTML='<img src="img/error.png">';
             }
          }
       }
    </script>
</head>
<body>
    <div class="box">
        <div class="left">
            <input type="text" id="phone" placeholder="請輸入手機號碼">
        </div>
        <div class="tip" id="tip">
           請輸入有效的手機號碼
        </div>
    </div>
</body>

④onchange:域的內(nèi)容改變時發(fā)生

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script>
       // 頁面加載
       window.onload=init;

       // 初始化
       function init(){
          // 獲取下拉菜單
          var menu=document.getElementById("menu");
          // 給菜單綁定change事件,一般作用域select或checkbox或radio
          menu.onchange=function(){
             // 獲取當(dāng)前選中的值
             //var bgcolor=this.value;
             var bgcolor=menu.options[menu.selectedIndex].value;
             // 如果bgcolor為空,則下面的腳本將不執(zhí)行
             // if(bgcolor=="")return;
             // 設(shè)置body的背景色
             // 如果bgcolor為空胖喳,則將背景色設(shè)為白色泡躯,否則是選擇的顏色
             if(bgcolor==""){
                document.body.style.background="#fff";
             }else{
                document.body.style.background=bgcolor;
             }
          }
       }
    </script>
</head>
<body>
    <div class="box">
        請選擇您喜歡的背景色:
        <select name="" id="menu">
            <option value="">請選擇</option>
            <option value="#f00">紅色</option>
            <option value="#0f0">綠色</option>
            <option value="#00f">藍色</option>
            <option value="#ff0">黃色</option>
            <option value="#ccc">灰色</option>
        </select>
    </div>
</body>

⑤onsubmit:表單中的確認(rèn)按鈕被點擊時發(fā)生
⑥onmousedown:鼠標(biāo)按鈕在元素上按下時觸發(fā)
⑦onmousemove:在鼠標(biāo)指針移動時發(fā)生
⑧onmouseup:在元素上松開鼠標(biāo)按鈕時觸發(fā)
⑨onresize:當(dāng)調(diào)整瀏覽器窗口的大小時觸發(fā)
⑩onscroll:拖動滾動條滾動時觸發(fā)

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
       body{height:2000px;}
       .box{width:200px;height:200px;background:#f00;overflow:auto;}
    </style>
</head>
<body>
    <div class="box" id="box">
        <p>拖動</p>
        <p>拖動</p>
        <p>拖動</p>
        <p>拖動</p>
        <p>拖動</p>
        <p>拖動</p>
        <p>拖動</p>
        <p>拖動</p>
        <p>拖動</p>
        <p>拖動</p>
    </div>
    <script>
       var box=document.getElementById("box");
       // 綁定按下的事件
       box.onmousedown=function(){
          console.log("我被按下了");
       }
       // 綁定移動的事件
       box.onmousemove=function(){
          console.log("我被移動了");
       }
       // 綁定松開的事件
       box.onmouseup=function(){
          console.log("我被松開了");
       }
       // 綁定點擊的事件
       box.onclick=function(){
          console.log("我被點擊了");
       }
       // 瀏覽器窗口尺寸發(fā)生改變時
       window.onresize=function(){
          console.log("我的尺寸被改變了");
       }
       // 拖動滾動條
       window.onscroll=function(){
          console.log("我被拖動了");
       }
       box.onscroll=function(){
          console.log("我是DIV的滾動條");
       }
    </script>
</body>

2.鍵盤事件與keyCode屬性
onkeydown :在用戶按下一個鍵盤按鍵時發(fā)生
onkeypress:在鍵盤按鍵被按下并釋放一個鍵時發(fā)生
onkeyup:在鍵盤按鍵被松開時發(fā)生
keyCode:返回onkeypress、onkeydown 或 onkeyup
事件觸發(fā)的鍵的值的字符代碼丽焊,或者的鍵的代碼精续。

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .text span{
            font-weight: bold;
            color: #f00;
        }
        em{
            font-style: normal;
        }
    </style>
</head>
<body>
    <p class="text">您還可以輸入
        <span>
            <em id="count">30</em>/30
        </span>
    </p>
    <div class="input">
        <textarea name="" id="text" cols="70" rows="4"></textarea>
    </div>
    <script>
        //獲取文本框的值
        var text=document.getElementById("text");
        //在事件觸發(fā)的function里,用一個參數(shù)接受事件對象
        // document.onkeydown=function (ev) {
        //     console.log(ev.keyCode);
        // }
        var total=30;
        //綁定鍵盤事件
        var count=document.getElementById("count");
        document.onkeyup=function (ev) {
            //獲取文本框的值的長度
            var len=text.value.length;
            var allow=total-len;
            count.innerHTML=allow;
        }
    </script>
</body>

四粹懒、this的指向

在事件觸發(fā)的函數(shù)中,this是對該DOM對象的引用顷级。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凫乖,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子弓颈,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凡蚜,死亡現(xiàn)場離奇詭異瓦阐,居然都是意外死亡,警方通過查閱死者的電腦和手機纤子,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門搬瑰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人控硼,你說我怎么就攤上這事泽论。” “怎么了卡乾?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵翼悴,是天一觀的道長。 經(jīng)常有香客問我幔妨,道長鹦赎,這世上最難降的妖魔是什么谍椅? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮古话,結(jié)果婚禮上雏吭,老公的妹妹穿的比我還像新娘。我一直安慰自己煞额,他們只是感情好思恐,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著膊毁,像睡著了一般胀莹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上婚温,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天描焰,我揣著相機與錄音,去河邊找鬼栅螟。 笑死荆秦,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的力图。 我是一名探鬼主播步绸,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼吃媒!你這毒婦竟也來了瓤介?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤赘那,失蹤者是張志新(化名)和其女友劉穎刑桑,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體募舟,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡祠斧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了拱礁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片琢锋。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖觅彰,靈堂內(nèi)的尸體忽然破棺而出吩蔑,到底是詐尸還是另有隱情,我是刑警寧澤填抬,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布烛芬,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏赘娄。R本人自食惡果不足惜仆潮,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望遣臼。 院中可真熱鬧性置,春花似錦、人聲如沸揍堰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽屏歹。三九已至隐砸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蝙眶,已是汗流浹背季希。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留幽纷,地道東北人式塌。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像友浸,于是被迫代替她去往敵國和親峰尝。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容